uuagc-bootstrap-0.9.38.6.2: src-derived/ExecutionPlan2Hs.hs
-- UUAGC 0.9.38.6 (ExecutionPlan2Hs.ag)
module ExecutionPlan2Hs where
{-# LINE 7 "ExecutionPlan2Hs.ag" #-}
import ExecutionPlan
import Pretty
import PPUtil
import Options
import Data.Maybe
import Debug.Trace
import System.IO
import System.Directory
import TokenDef
import HsToken
import qualified Data.Set as Set
import qualified Data.Map as Map
{-# LINE 22 "../src-derived/ExecutionPlan2Hs.hs" #-}
{-# LINE 2 "./ExecutionPlan.ag" #-}
-- VisitSyntax.ag imports
import Patterns (Pattern(..),Patterns)
import Expression (Expression(..))
import CommonTypes
import qualified Data.Set as Set
{-# LINE 32 "../src-derived/ExecutionPlan2Hs.hs" #-}
{-# LINE 2 "./Patterns.ag" #-}
-- Patterns.ag imports
import UU.Scanner.Position(Pos)
import CommonTypes (ConstructorIdent,Identifier)
{-# LINE 39 "../src-derived/ExecutionPlan2Hs.hs" #-}
{-# LINE 2 "./Expression.ag" #-}
import UU.Scanner.Position(Pos)
import HsToken
{-# LINE 45 "../src-derived/ExecutionPlan2Hs.hs" #-}
{-# LINE 2 "./HsToken.ag" #-}
import CommonTypes
import UU.Scanner.Position(Pos)
{-# LINE 51 "../src-derived/ExecutionPlan2Hs.hs" #-}
{-# LINE 204 "ExecutionPlan2Hs.ag" #-}
type VisitStateState = (VisitIdentifier,StateIdentifier, StateIdentifier)
{-# LINE 54 "../src-derived/ExecutionPlan2Hs.hs" #-}
{-# LINE 475 "ExecutionPlan2Hs.ag" #-}
uwSetUnion :: (Ord a, Ord b) => Map.Map a (Set.Set b) -> Map.Map a (Set.Set b) -> Map.Map a (Set.Set b)
uwSetUnion = Map.unionWith Set.union
{-# LINE 60 "../src-derived/ExecutionPlan2Hs.hs" #-}
{-# LINE 644 "ExecutionPlan2Hs.ag" #-}
renderDocs :: [PP_Doc] -> String
renderDocs pps = foldr (.) id (map (\d -> (disp d 50000) . ( '\n':) ) pps) ""
writeModule :: FilePath -> [PP_Doc] -> IO ()
writeModule path docs
= do bExists <- doesFileExist path
if bExists
then do input <- readFile path
seq (length input) (return ())
if input /= output
then dumpIt
else return ()
else dumpIt
where
output = renderDocs docs
dumpIt = writeFile path output
{-# LINE 80 "../src-derived/ExecutionPlan2Hs.hs" #-}
-- EChild ------------------------------------------------------
{-
visit 0:
inherited attributes:
nt : NontermIdent
options : Options
synthesized attributes:
argnames : PP_Doc
argnamesw : PP_Doc
argtps : PP_Doc
childintros : Map.Map Identifier PP_Doc
datatype : PP_Doc
terminaldefs : Set.Set String
alternatives:
alternative EChild:
child name : {Identifier}
child tp : {Type}
child virtual : {Maybe (Maybe Type)}
visit 0:
local addStrict : _
local argnames : _
-}
-- cata
sem_EChild :: EChild ->
T_EChild
sem_EChild (EChild _name _tp _virtual ) =
(sem_EChild_EChild _name _tp _virtual )
-- semantic domain
newtype T_EChild = T_EChild (NontermIdent ->
Options ->
( ( PP_Doc ),( PP_Doc ),( PP_Doc ),(Map.Map Identifier PP_Doc),PP_Doc,(Set.Set String)))
data Inh_EChild = Inh_EChild {nt_Inh_EChild :: NontermIdent,options_Inh_EChild :: Options}
data Syn_EChild = Syn_EChild {argnames_Syn_EChild :: ( PP_Doc ),argnamesw_Syn_EChild :: ( PP_Doc ),argtps_Syn_EChild :: ( PP_Doc ),childintros_Syn_EChild :: (Map.Map Identifier PP_Doc),datatype_Syn_EChild :: PP_Doc,terminaldefs_Syn_EChild :: (Set.Set String)}
wrap_EChild :: T_EChild ->
Inh_EChild ->
Syn_EChild
wrap_EChild (T_EChild sem ) (Inh_EChild _lhsInt _lhsIoptions ) =
(let ( _lhsOargnames,_lhsOargnamesw,_lhsOargtps,_lhsOchildintros,_lhsOdatatype,_lhsOterminaldefs) = sem _lhsInt _lhsIoptions
in (Syn_EChild _lhsOargnames _lhsOargnamesw _lhsOargtps _lhsOchildintros _lhsOdatatype _lhsOterminaldefs ))
sem_EChild_EChild :: Identifier ->
Type ->
(Maybe (Maybe Type)) ->
T_EChild
sem_EChild_EChild name_ tp_ virtual_ =
(T_EChild (\ _lhsInt
_lhsIoptions ->
(let _lhsOdatatype :: PP_Doc
_lhsOargnamesw :: ( PP_Doc )
_lhsOargtps :: ( PP_Doc )
_lhsOchildintros :: (Map.Map Identifier PP_Doc)
_lhsOterminaldefs :: (Set.Set String)
_lhsOargnames :: ( PP_Doc )
-- "ExecutionPlan2Hs.ag"(line 127, column 12)
_lhsOdatatype =
({-# LINE 127 "ExecutionPlan2Hs.ag" #-}
if isJust virtual_
then empty
else _addStrict $ pp_parens $ typeToHaskellString (Just _lhsInt) [] tp_
{-# LINE 139 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 130, column 12)
_addStrict =
({-# LINE 130 "ExecutionPlan2Hs.ag" #-}
\x -> if strictData _lhsIoptions then "!" >|< x else x
{-# LINE 145 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 177, column 12)
_lhsOargnamesw =
({-# LINE 177 "ExecutionPlan2Hs.ag" #-}
if isJust virtual_
then empty
else if isNonterminal tp_
then "(" >#< "sem_" >|< extractNonterminal tp_ >#< "field_" >|< name_ >#< ")"
else text $ locname name_
{-# LINE 155 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 324, column 12)
_lhsOargtps =
({-# LINE 324 "ExecutionPlan2Hs.ag" #-}
if isJust virtual_
then empty
else if isNonterminal tp_
then ("T_" >|< extractNonterminal tp_) >#< "->"
else (text $ show tp_) >#< "->"
{-# LINE 165 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 329, column 12)
_argnames =
({-# LINE 329 "ExecutionPlan2Hs.ag" #-}
if isJust virtual_
then empty
else if isNonterminal tp_
then "field_" >|< name_
else text $ locname name_
{-# LINE 175 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 390, column 12)
_lhsOchildintros =
({-# LINE 390 "ExecutionPlan2Hs.ag" #-}
Map.singleton name_ $ locname name_ >#< "<-" >#< "return" >#< "$" >#<
if isJust virtual_
then "sem_" >|< extractNonterminal tp_ >#< instname name_
else "field_" >|< name_
{-# LINE 184 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 486, column 12)
_lhsOterminaldefs =
({-# LINE 486 "ExecutionPlan2Hs.ag" #-}
if isJust virtual_ || isNonterminal tp_
then Set.empty
else Set.singleton $ locname name_
{-# LINE 192 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (from local)
_lhsOargnames =
({-# LINE 319 "ExecutionPlan2Hs.ag" #-}
_argnames
{-# LINE 198 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOargnames,_lhsOargnamesw,_lhsOargtps,_lhsOchildintros,_lhsOdatatype,_lhsOterminaldefs))) )
-- EChildren ---------------------------------------------------
{-
visit 0:
inherited attributes:
nt : NontermIdent
options : Options
synthesized attributes:
argnames : [PP_Doc]
argnamesw : [PP_Doc]
argtps : [PP_Doc]
childintros : Map.Map Identifier PP_Doc
datatype : [PP_Doc]
terminaldefs : Set.Set String
alternatives:
alternative Cons:
child hd : EChild
child tl : EChildren
alternative Nil:
-}
-- cata
sem_EChildren :: EChildren ->
T_EChildren
sem_EChildren list =
(Prelude.foldr sem_EChildren_Cons sem_EChildren_Nil (Prelude.map sem_EChild list) )
-- semantic domain
newtype T_EChildren = T_EChildren (NontermIdent ->
Options ->
( ( [PP_Doc] ),([PP_Doc]),( [PP_Doc] ),(Map.Map Identifier PP_Doc),([PP_Doc]),(Set.Set String)))
data Inh_EChildren = Inh_EChildren {nt_Inh_EChildren :: NontermIdent,options_Inh_EChildren :: Options}
data Syn_EChildren = Syn_EChildren {argnames_Syn_EChildren :: ( [PP_Doc] ),argnamesw_Syn_EChildren :: ([PP_Doc]),argtps_Syn_EChildren :: ( [PP_Doc] ),childintros_Syn_EChildren :: (Map.Map Identifier PP_Doc),datatype_Syn_EChildren :: ([PP_Doc]),terminaldefs_Syn_EChildren :: (Set.Set String)}
wrap_EChildren :: T_EChildren ->
Inh_EChildren ->
Syn_EChildren
wrap_EChildren (T_EChildren sem ) (Inh_EChildren _lhsInt _lhsIoptions ) =
(let ( _lhsOargnames,_lhsOargnamesw,_lhsOargtps,_lhsOchildintros,_lhsOdatatype,_lhsOterminaldefs) = sem _lhsInt _lhsIoptions
in (Syn_EChildren _lhsOargnames _lhsOargnamesw _lhsOargtps _lhsOchildintros _lhsOdatatype _lhsOterminaldefs ))
sem_EChildren_Cons :: T_EChild ->
T_EChildren ->
T_EChildren
sem_EChildren_Cons (T_EChild hd_ ) (T_EChildren tl_ ) =
(T_EChildren (\ _lhsInt
_lhsIoptions ->
(let _lhsOargnames :: ( [PP_Doc] )
_lhsOargnamesw :: ([PP_Doc])
_lhsOargtps :: ( [PP_Doc] )
_lhsOchildintros :: (Map.Map Identifier PP_Doc)
_lhsOdatatype :: ([PP_Doc])
_lhsOterminaldefs :: (Set.Set String)
_hdOnt :: NontermIdent
_hdOoptions :: Options
_tlOnt :: NontermIdent
_tlOoptions :: Options
_hdIargnames :: ( PP_Doc )
_hdIargnamesw :: ( PP_Doc )
_hdIargtps :: ( PP_Doc )
_hdIchildintros :: (Map.Map Identifier PP_Doc)
_hdIdatatype :: PP_Doc
_hdIterminaldefs :: (Set.Set String)
_tlIargnames :: ( [PP_Doc] )
_tlIargnamesw :: ([PP_Doc])
_tlIargtps :: ( [PP_Doc] )
_tlIchildintros :: (Map.Map Identifier PP_Doc)
_tlIdatatype :: ([PP_Doc])
_tlIterminaldefs :: (Set.Set String)
-- use rule "ExecutionPlan2Hs.ag"(line 321, column 31)
_lhsOargnames =
({-# LINE 321 "ExecutionPlan2Hs.ag" #-}
_hdIargnames : _tlIargnames
{-# LINE 269 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 174, column 32)
_lhsOargnamesw =
({-# LINE 174 "ExecutionPlan2Hs.ag" #-}
_hdIargnamesw : _tlIargnamesw
{-# LINE 275 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 320, column 31)
_lhsOargtps =
({-# LINE 320 "ExecutionPlan2Hs.ag" #-}
_hdIargtps : _tlIargtps
{-# LINE 281 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 381, column 41)
_lhsOchildintros =
({-# LINE 381 "ExecutionPlan2Hs.ag" #-}
_hdIchildintros `Map.union` _tlIchildintros
{-# LINE 287 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 124, column 51)
_lhsOdatatype =
({-# LINE 124 "ExecutionPlan2Hs.ag" #-}
_hdIdatatype : _tlIdatatype
{-# LINE 293 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 483, column 42)
_lhsOterminaldefs =
({-# LINE 483 "ExecutionPlan2Hs.ag" #-}
_hdIterminaldefs `Set.union` _tlIterminaldefs
{-# LINE 299 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOnt =
({-# LINE 123 "ExecutionPlan2Hs.ag" #-}
_lhsInt
{-# LINE 305 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 311 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOnt =
({-# LINE 124 "ExecutionPlan2Hs.ag" #-}
_lhsInt
{-# LINE 317 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 323 "ExecutionPlan2Hs.hs" #-}
)
( _hdIargnames,_hdIargnamesw,_hdIargtps,_hdIchildintros,_hdIdatatype,_hdIterminaldefs) =
hd_ _hdOnt _hdOoptions
( _tlIargnames,_tlIargnamesw,_tlIargtps,_tlIchildintros,_tlIdatatype,_tlIterminaldefs) =
tl_ _tlOnt _tlOoptions
in ( _lhsOargnames,_lhsOargnamesw,_lhsOargtps,_lhsOchildintros,_lhsOdatatype,_lhsOterminaldefs))) )
sem_EChildren_Nil :: T_EChildren
sem_EChildren_Nil =
(T_EChildren (\ _lhsInt
_lhsIoptions ->
(let _lhsOargnames :: ( [PP_Doc] )
_lhsOargnamesw :: ([PP_Doc])
_lhsOargtps :: ( [PP_Doc] )
_lhsOchildintros :: (Map.Map Identifier PP_Doc)
_lhsOdatatype :: ([PP_Doc])
_lhsOterminaldefs :: (Set.Set String)
-- use rule "ExecutionPlan2Hs.ag"(line 321, column 31)
_lhsOargnames =
({-# LINE 321 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 344 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 174, column 32)
_lhsOargnamesw =
({-# LINE 174 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 350 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 320, column 31)
_lhsOargtps =
({-# LINE 320 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 356 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 381, column 41)
_lhsOchildintros =
({-# LINE 381 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 362 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 124, column 51)
_lhsOdatatype =
({-# LINE 124 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 368 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 483, column 42)
_lhsOterminaldefs =
({-# LINE 483 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 374 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOargnames,_lhsOargnamesw,_lhsOargtps,_lhsOchildintros,_lhsOdatatype,_lhsOterminaldefs))) )
-- ENonterminal ------------------------------------------------
{-
visit 0:
inherited attributes:
allchildvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
avisitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
avisituses : Map.Map VisitIdentifier (Set.Set Identifier)
derivings : Derivings
importBlocks : PP_Doc
inhmap : Map.Map NontermIdent Attributes
mainFile : String
mainName : String
moduleHeader : String -> String -> String -> Bool -> String
options : Options
optionsLine : String
pragmaBlocks : String
synmap : Map.Map NontermIdent Attributes
textBlocks : PP_Doc
typeSyns : TypeSyns
wrappers : Set.Set NontermIdent
synthesized attributes:
appendCommon : PP_Doc
appendMain : PP_Doc
childvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
genProdIO : IO ()
imports : [PP_Doc]
output : PP_Doc
visitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
visituses : Map.Map VisitIdentifier (Set.Set Identifier)
alternatives:
alternative ENonterminal:
child nt : {NontermIdent}
child params : {[Identifier]}
child initial : {StateIdentifier}
child initialv : {Maybe VisitIdentifier}
child prods : EProductions
visit 0:
local datatype : _
local derivings : _
local fsemname : _
local semname : _
local frecarg : _
local sem_nt : _
local outedges : _
local inedges : _
local allstates : _
local t_type : _
local t_init : _
local t_states : _
local k_type : _
local k_states : _
local wr_inh : _
local wr_syn : _
local genwrap : _
local wr_inhs : _
local wr_syns : _
local inhlist : _
local synlist : _
local wrapname : _
local inhname : _
local synname : _
local wrapper : _
-}
-- cata
sem_ENonterminal :: ENonterminal ->
T_ENonterminal
sem_ENonterminal (ENonterminal _nt _params _initial _initialv _prods ) =
(sem_ENonterminal_ENonterminal _nt _params _initial _initialv (sem_EProductions _prods ) )
-- semantic domain
newtype T_ENonterminal = T_ENonterminal ((Map.Map VisitIdentifier (Identifier -> PP_Doc)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
Derivings ->
PP_Doc ->
(Map.Map NontermIdent Attributes) ->
String ->
String ->
(String -> String -> String -> Bool -> String) ->
Options ->
String ->
String ->
(Map.Map NontermIdent Attributes) ->
PP_Doc ->
TypeSyns ->
(Set.Set NontermIdent) ->
( ( PP_Doc ),( PP_Doc ),(Map.Map VisitIdentifier (Identifier -> PP_Doc)),(IO ()),([PP_Doc]),PP_Doc,(Map.Map VisitIdentifier (Set.Set Identifier)),(Map.Map VisitIdentifier (Set.Set Identifier))))
data Inh_ENonterminal = Inh_ENonterminal {allchildvisit_Inh_ENonterminal :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),avisitdefs_Inh_ENonterminal :: (Map.Map VisitIdentifier (Set.Set Identifier)),avisituses_Inh_ENonterminal :: (Map.Map VisitIdentifier (Set.Set Identifier)),derivings_Inh_ENonterminal :: Derivings,importBlocks_Inh_ENonterminal :: PP_Doc,inhmap_Inh_ENonterminal :: (Map.Map NontermIdent Attributes),mainFile_Inh_ENonterminal :: String,mainName_Inh_ENonterminal :: String,moduleHeader_Inh_ENonterminal :: (String -> String -> String -> Bool -> String),options_Inh_ENonterminal :: Options,optionsLine_Inh_ENonterminal :: String,pragmaBlocks_Inh_ENonterminal :: String,synmap_Inh_ENonterminal :: (Map.Map NontermIdent Attributes),textBlocks_Inh_ENonterminal :: PP_Doc,typeSyns_Inh_ENonterminal :: TypeSyns,wrappers_Inh_ENonterminal :: (Set.Set NontermIdent)}
data Syn_ENonterminal = Syn_ENonterminal {appendCommon_Syn_ENonterminal :: ( PP_Doc ),appendMain_Syn_ENonterminal :: ( PP_Doc ),childvisit_Syn_ENonterminal :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),genProdIO_Syn_ENonterminal :: (IO ()),imports_Syn_ENonterminal :: ([PP_Doc]),output_Syn_ENonterminal :: PP_Doc,visitdefs_Syn_ENonterminal :: (Map.Map VisitIdentifier (Set.Set Identifier)),visituses_Syn_ENonterminal :: (Map.Map VisitIdentifier (Set.Set Identifier))}
wrap_ENonterminal :: T_ENonterminal ->
Inh_ENonterminal ->
Syn_ENonterminal
wrap_ENonterminal (T_ENonterminal sem ) (Inh_ENonterminal _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers ) =
(let ( _lhsOappendCommon,_lhsOappendMain,_lhsOchildvisit,_lhsOgenProdIO,_lhsOimports,_lhsOoutput,_lhsOvisitdefs,_lhsOvisituses) = sem _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers
in (Syn_ENonterminal _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOgenProdIO _lhsOimports _lhsOoutput _lhsOvisitdefs _lhsOvisituses ))
sem_ENonterminal_ENonterminal :: NontermIdent ->
([Identifier]) ->
StateIdentifier ->
(Maybe VisitIdentifier) ->
T_EProductions ->
T_ENonterminal
sem_ENonterminal_ENonterminal nt_ params_ initial_ initialv_ (T_EProductions prods_ ) =
(T_ENonterminal (\ _lhsIallchildvisit
_lhsIavisitdefs
_lhsIavisituses
_lhsIderivings
_lhsIimportBlocks
_lhsIinhmap
_lhsImainFile
_lhsImainName
_lhsImoduleHeader
_lhsIoptions
_lhsIoptionsLine
_lhsIpragmaBlocks
_lhsIsynmap
_lhsItextBlocks
_lhsItypeSyns
_lhsIwrappers ->
(let _prodsOrename :: Bool
_lhsOoutput :: PP_Doc
_prodsOinhmap :: Attributes
_prodsOsynmap :: Attributes
_prodsOnt :: NontermIdent
_prodsOinitial :: StateIdentifier
_prodsOallstates :: (Set.Set StateIdentifier)
_lhsOappendMain :: ( PP_Doc )
_lhsOappendCommon :: ( PP_Doc )
_lhsOchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_lhsOgenProdIO :: (IO ())
_lhsOimports :: ([PP_Doc])
_lhsOvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_prodsOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_prodsOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_prodsOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_prodsOimportBlocks :: PP_Doc
_prodsOmainFile :: String
_prodsOmainName :: String
_prodsOmoduleHeader :: (String -> String -> String -> Bool -> String)
_prodsOoptions :: Options
_prodsOoptionsLine :: String
_prodsOpragmaBlocks :: String
_prodsOtextBlocks :: PP_Doc
_prodsIallvisits :: ([VisitStateState])
_prodsIchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_prodsIdatatype :: ([PP_Doc])
_prodsIgenProdIO :: (IO ())
_prodsIimports :: ([PP_Doc])
_prodsIsem_nt :: PP_Doc
_prodsIsem_prod :: PP_Doc
_prodsIt_visits :: PP_Doc
_prodsIvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_prodsIvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
-- "ExecutionPlan2Hs.ag"(line 45, column 18)
_prodsOrename =
({-# LINE 45 "ExecutionPlan2Hs.ag" #-}
rename _lhsIoptions
{-# LINE 533 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 62, column 18)
_lhsOoutput =
({-# LINE 62 "ExecutionPlan2Hs.ag" #-}
("-- " ++ getName nt_ ++ " " ++ replicate (60 - length (getName nt_)) '-')
>-< (if dataTypes _lhsIoptions
then "-- data"
>-< _datatype
>-< ""
else empty)
>-< (if nt_ `Set.member` _lhsIwrappers
then "-- wrapper"
>-< _wr_inh
>-< _wr_syn
>-< _wrapper
>-< ""
else empty)
>-< (if folds _lhsIoptions
then "-- cata"
>-< _sem_nt
>-< ""
else empty)
>-< (if semfuns _lhsIoptions
then "-- semantic domain"
>-< _t_init
>-< _t_states
>-< _k_states
>-< _prodsIt_visits
>-< _prodsIsem_prod
>-< ""
else empty)
{-# LINE 565 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 101, column 18)
_datatype =
({-# LINE 101 "ExecutionPlan2Hs.ag" #-}
case lookup nt_ _lhsItypeSyns of
Nothing -> "data" >#< nt_ >#< (vlist $ ("=" >#< head _prodsIdatatype)
: (map ("|" >#<) $ tail _prodsIdatatype)) >#< _derivings
Just (List t) -> "type" >#< nt_ >#< "=" >#< "[" >#< show t >#< "]"
Just (Maybe t) -> "type" >#< nt_ >#< "=" >#< "Maybe" >#< show t
Just (Tuple ts) -> "type" >#< nt_ >#< "=" >#< pp_parens (ppCommas $ map (show . snd) ts)
Just (Either l r) -> "type" >#< nt_ >#< "=" >#< "Either" >#< show l >#< show r
Just (Map k v) -> "type" >#< nt_ >#< "=" >#< "Data.Map.Map" >#< pp_parens (show k) >#< show v
Just (IntMap t) -> "type" >#< nt_ >#< "=" >#< "Data.IntMap.IntMap" >#< show t
{-# LINE 579 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 111, column 18)
_derivings =
({-# LINE 111 "ExecutionPlan2Hs.ag" #-}
case Map.lookup nt_ _lhsIderivings of
Nothing -> empty
Just s -> if Set.null s
then empty
else "deriving" >#< (pp_parens $ ppCommas $ map pp $ Set.toList s)
{-# LINE 589 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 136, column 18)
_fsemname =
({-# LINE 136 "ExecutionPlan2Hs.ag" #-}
\x -> "sem_" ++ show x
{-# LINE 595 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 137, column 18)
_semname =
({-# LINE 137 "ExecutionPlan2Hs.ag" #-}
_fsemname nt_
{-# LINE 601 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 138, column 18)
_frecarg =
({-# LINE 138 "ExecutionPlan2Hs.ag" #-}
\t x -> case t of
NT nt _ -> pp_parens (_fsemname nt >#< x)
_ -> pp x
{-# LINE 609 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 141, column 18)
_sem_nt =
({-# LINE 141 "ExecutionPlan2Hs.ag" #-}
_semname >#< "::" >#< nt_ >#< "->" >#< _t_type
>-< case lookup nt_ _lhsItypeSyns of
Nothing -> _prodsIsem_nt
Just (List t) -> _semname >#< "list" >#< "=" >#< "Prelude.foldr" >#< _semname >|< "_Cons"
>#< _semname >|< "_Nil"
>#< case t of
NT nt _ -> pp_parens ("Prelude.map" >#< _fsemname nt >#< "list")
_ -> pp "list"
Just (Maybe t) -> _semname >#< "Prelude.Nothing" >#< "=" >#< _semname >|< "_Nothing"
>-< _semname >#< pp_parens ("Prelude.Just just") >#< "="
>#< _semname >|< "_Just" >#< _frecarg t "just"
Just (Tuple ts) -> _semname >#< pp_parens (ppCommas $ map fst ts) >#< "="
>#< _semname >|< "_Tuple" >#< ppSpaced (map (\t -> _frecarg (snd t) (show $ fst t)) ts)
Just (Either l r) -> _semname >#< "(Prelude.Left left)" >#< "=" >#< _semname >|< "_Left" >#< _frecarg l "left"
>-< _semname >#< "(Prelude.Right right)" >#< "=" >#< _semname >|< "_Right" >#< _frecarg r "right"
Just (Map k v) -> _semname >#< "m" >#< "=" >#< "Data.Map.foldrWithKey"
>#< _semname >|< "_Entry" >#< _semname >|< "_Nil"
>#< case v of
NT nt _ -> pp_parens ("Data.Map.map" >#< _fsemname nt >#< "m")
_ -> pp "m"
Just (IntMap v) -> _semname >#< "m" >#< "=" >#< "Data.IntMap.foldWithKey"
>#< _semname >|< "_Entry" >#< _semname >|< "_Nil"
>#< case v of
NT nt _ -> pp_parens ("Data.IntMap.map" >#< _fsemname nt >#< "m")
_ -> pp "m"
{-# LINE 639 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 198, column 19)
(Just _prodsOinhmap ) =
({-# LINE 198 "ExecutionPlan2Hs.ag" #-}
Map.lookup nt_ _lhsIinhmap
{-# LINE 645 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 199, column 19)
(Just _prodsOsynmap ) =
({-# LINE 199 "ExecutionPlan2Hs.ag" #-}
Map.lookup nt_ _lhsIsynmap
{-# LINE 651 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 220, column 18)
_outedges =
({-# LINE 220 "ExecutionPlan2Hs.ag" #-}
Set.fromList $ map (\(_,f,_) -> f) _prodsIallvisits
{-# LINE 657 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 221, column 18)
_inedges =
({-# LINE 221 "ExecutionPlan2Hs.ag" #-}
Set.fromList $ map (\(_,_,t) -> t) _prodsIallvisits
{-# LINE 663 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 222, column 18)
_allstates =
({-# LINE 222 "ExecutionPlan2Hs.ag" #-}
Set.insert initial_ $ _inedges `Set.union` _outedges
{-# LINE 669 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 223, column 18)
_t_type =
({-# LINE 223 "ExecutionPlan2Hs.ag" #-}
"T_" ++ show nt_
{-# LINE 675 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 224, column 18)
_t_init =
({-# LINE 224 "ExecutionPlan2Hs.ag" #-}
"type" >#< _t_type >#< "=" >#< _t_type >|< "_s" >|< initial_
{-# LINE 681 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 225, column 18)
_t_states =
({-# LINE 225 "ExecutionPlan2Hs.ag" #-}
vlist $ map (\st ->
let nt_st = nt_ >|< "_s" >|< st
t_st = "T_" >|< nt_st
k_st = "K_" >|< nt_st
c_st = "C_" >|< nt_st
inv_st = "inv_" >|< nt_st
in "data" >#< t_st >#< "where" >#< c_st >#< "::" >#< "{" >#< inv_st >#< "::"
>#< "!" >|< pp_parens ("forall t." >#< k_st >#< "t" >#< "->" >#< "t") >#< "}"
>#< "->" >#< t_st
) $ Set.toList _allstates
{-# LINE 696 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 238, column 18)
_k_type =
({-# LINE 238 "ExecutionPlan2Hs.ag" #-}
"K_" ++ show nt_
{-# LINE 702 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 239, column 18)
_k_states =
({-# LINE 239 "ExecutionPlan2Hs.ag" #-}
vlist $ map (\st ->
let nt_st = nt_ >|< "_s" >|< st
k_st = "K_" >|< nt_st
outg = filter (\(v,f,t) -> f == st) _prodsIallvisits
visitlist = vlist $ map (\(v,f,t) ->
_k_type >|< "_v" >|< v >#< "::" >#< k_st >#< _t_type >|< "_v" >|< v
) outg
in "data" >#< k_st >#< "k" >#< "where"
>-< indent 3 visitlist) $ Set.toList _allstates
{-# LINE 716 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 259, column 18)
_prodsOnt =
({-# LINE 259 "ExecutionPlan2Hs.ag" #-}
nt_
{-# LINE 722 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 276, column 18)
_wr_inh =
({-# LINE 276 "ExecutionPlan2Hs.ag" #-}
_genwrap "Inh" _wr_inhs
{-# LINE 728 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 277, column 18)
_wr_syn =
({-# LINE 277 "ExecutionPlan2Hs.ag" #-}
_genwrap "Syn" _wr_syns
{-# LINE 734 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 278, column 18)
_genwrap =
({-# LINE 278 "ExecutionPlan2Hs.ag" #-}
\nm attr -> "data" >#< nm >|< "_" >|< nt_ >#< "=" >#< nm >|< "_" >|< nt_ >#< "{"
>#< (ppCommas $ map (\(i,t) -> i >|< "_" >|< nm >|< "_" >|< nt_ >#< "::"
>#< typeToHaskellString (Just nt_) [] t) attr) >#< "}"
{-# LINE 742 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 281, column 18)
_wr_inhs =
({-# LINE 281 "ExecutionPlan2Hs.ag" #-}
Map.toList $ fromJust $ Map.lookup nt_ _lhsIinhmap
{-# LINE 748 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 282, column 18)
_wr_syns =
({-# LINE 282 "ExecutionPlan2Hs.ag" #-}
Map.toList $ fromJust $ Map.lookup nt_ _lhsIsynmap
{-# LINE 754 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 283, column 18)
_inhlist =
({-# LINE 283 "ExecutionPlan2Hs.ag" #-}
map (lhsname True . fst) _wr_inhs
{-# LINE 760 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 284, column 18)
_synlist =
({-# LINE 284 "ExecutionPlan2Hs.ag" #-}
map (lhsname False . fst) _wr_syns
{-# LINE 766 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 285, column 18)
_wrapname =
({-# LINE 285 "ExecutionPlan2Hs.ag" #-}
"wrap_" ++ show nt_
{-# LINE 772 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 286, column 18)
_inhname =
({-# LINE 286 "ExecutionPlan2Hs.ag" #-}
"Inh_" ++ show nt_
{-# LINE 778 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 287, column 18)
_synname =
({-# LINE 287 "ExecutionPlan2Hs.ag" #-}
"Syn_" ++ show nt_
{-# LINE 784 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 288, column 18)
_wrapper =
({-# LINE 288 "ExecutionPlan2Hs.ag" #-}
(_wrapname >#< "::" >#< _t_type >#< "->"
>#< _inhname >#< "->" >#< _synname )
>-<
(_wrapname >#< "sem" >#< "(" >#< _inhname
>#< ppSpaced _inhlist >#< ")" >#< "=")
>-<
indent 3 (case initialv_ of
Nothing -> _synname >#< " { }"
Just initv ->
"let" >#< "(" >#< ppCommas _synlist >#< "," >#< "_" >#< ")" >#< "="
>#< "Control.Monad.Identity.runIdentity"
>#< pp_parens ("inv_" >|< nt_ >|< "_s" >|< initial_
>#< "sem" >#< _k_type >|< "_v" >|< initv
>#< ppSpaced _inhlist )
>-<
"in " >#< "(" >#< _synname >#< ppSpaced _synlist >#< ")")
{-# LINE 805 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 315, column 18)
_prodsOinitial =
({-# LINE 315 "ExecutionPlan2Hs.ag" #-}
initial_
{-# LINE 811 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 316, column 18)
_prodsOallstates =
({-# LINE 316 "ExecutionPlan2Hs.ag" #-}
_allstates
{-# LINE 817 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 613, column 18)
_lhsOappendMain =
({-# LINE 613 "ExecutionPlan2Hs.ag" #-}
(if nt_ `Set.member` _lhsIwrappers
then _wr_inh
>-< _wr_syn
>-< _wrapper
else empty)
>-< _sem_nt
{-# LINE 828 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 619, column 18)
_lhsOappendCommon =
({-# LINE 619 "ExecutionPlan2Hs.ag" #-}
(if dataTypes _lhsIoptions then _datatype else empty)
>-< _t_init
>-< _t_states
>-< _k_states
>-< _prodsIt_visits
{-# LINE 838 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 458, column 37)
_lhsOchildvisit =
({-# LINE 458 "ExecutionPlan2Hs.ag" #-}
_prodsIchildvisit
{-# LINE 844 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 627, column 49)
_lhsOgenProdIO =
({-# LINE 627 "ExecutionPlan2Hs.ag" #-}
_prodsIgenProdIO
{-# LINE 850 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 626, column 47)
_lhsOimports =
({-# LINE 626 "ExecutionPlan2Hs.ag" #-}
_prodsIimports
{-# LINE 856 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 518, column 36)
_lhsOvisitdefs =
({-# LINE 518 "ExecutionPlan2Hs.ag" #-}
_prodsIvisitdefs
{-# LINE 862 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 519, column 36)
_lhsOvisituses =
({-# LINE 519 "ExecutionPlan2Hs.ag" #-}
_prodsIvisituses
{-# LINE 868 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_prodsOallchildvisit =
({-# LINE 457 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 874 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_prodsOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 880 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_prodsOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 886 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_prodsOimportBlocks =
({-# LINE 25 "ExecutionPlan2Hs.ag" #-}
_lhsIimportBlocks
{-# LINE 892 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_prodsOmainFile =
({-# LINE 29 "ExecutionPlan2Hs.ag" #-}
_lhsImainFile
{-# LINE 898 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_prodsOmainName =
({-# LINE 31 "ExecutionPlan2Hs.ag" #-}
_lhsImainName
{-# LINE 904 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_prodsOmoduleHeader =
({-# LINE 28 "ExecutionPlan2Hs.ag" #-}
_lhsImoduleHeader
{-# LINE 910 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_prodsOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 916 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_prodsOoptionsLine =
({-# LINE 30 "ExecutionPlan2Hs.ag" #-}
_lhsIoptionsLine
{-# LINE 922 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_prodsOpragmaBlocks =
({-# LINE 26 "ExecutionPlan2Hs.ag" #-}
_lhsIpragmaBlocks
{-# LINE 928 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_prodsOtextBlocks =
({-# LINE 27 "ExecutionPlan2Hs.ag" #-}
_lhsItextBlocks
{-# LINE 934 "ExecutionPlan2Hs.hs" #-}
)
( _prodsIallvisits,_prodsIchildvisit,_prodsIdatatype,_prodsIgenProdIO,_prodsIimports,_prodsIsem_nt,_prodsIsem_prod,_prodsIt_visits,_prodsIvisitdefs,_prodsIvisituses) =
prods_ _prodsOallchildvisit _prodsOallstates _prodsOavisitdefs _prodsOavisituses _prodsOimportBlocks _prodsOinhmap _prodsOinitial _prodsOmainFile _prodsOmainName _prodsOmoduleHeader _prodsOnt _prodsOoptions _prodsOoptionsLine _prodsOpragmaBlocks _prodsOrename _prodsOsynmap _prodsOtextBlocks
in ( _lhsOappendCommon,_lhsOappendMain,_lhsOchildvisit,_lhsOgenProdIO,_lhsOimports,_lhsOoutput,_lhsOvisitdefs,_lhsOvisituses))) )
-- ENonterminals -----------------------------------------------
{-
visit 0:
inherited attributes:
allchildvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
avisitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
avisituses : Map.Map VisitIdentifier (Set.Set Identifier)
derivings : Derivings
importBlocks : PP_Doc
inhmap : Map.Map NontermIdent Attributes
mainFile : String
mainName : String
moduleHeader : String -> String -> String -> Bool -> String
options : Options
optionsLine : String
pragmaBlocks : String
synmap : Map.Map NontermIdent Attributes
textBlocks : PP_Doc
typeSyns : TypeSyns
wrappers : Set.Set NontermIdent
synthesized attributes:
appendCommon : [PP_Doc]
appendMain : [PP_Doc]
childvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
genProdIO : IO ()
imports : [PP_Doc]
output : PP_Doc
visitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
visituses : Map.Map VisitIdentifier (Set.Set Identifier)
alternatives:
alternative Cons:
child hd : ENonterminal
child tl : ENonterminals
alternative Nil:
-}
-- cata
sem_ENonterminals :: ENonterminals ->
T_ENonterminals
sem_ENonterminals list =
(Prelude.foldr sem_ENonterminals_Cons sem_ENonterminals_Nil (Prelude.map sem_ENonterminal list) )
-- semantic domain
newtype T_ENonterminals = T_ENonterminals ((Map.Map VisitIdentifier (Identifier -> PP_Doc)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
Derivings ->
PP_Doc ->
(Map.Map NontermIdent Attributes) ->
String ->
String ->
(String -> String -> String -> Bool -> String) ->
Options ->
String ->
String ->
(Map.Map NontermIdent Attributes) ->
PP_Doc ->
TypeSyns ->
(Set.Set NontermIdent) ->
( ([PP_Doc]),([PP_Doc]),(Map.Map VisitIdentifier (Identifier -> PP_Doc)),(IO ()),([PP_Doc]),PP_Doc,(Map.Map VisitIdentifier (Set.Set Identifier)),(Map.Map VisitIdentifier (Set.Set Identifier))))
data Inh_ENonterminals = Inh_ENonterminals {allchildvisit_Inh_ENonterminals :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),avisitdefs_Inh_ENonterminals :: (Map.Map VisitIdentifier (Set.Set Identifier)),avisituses_Inh_ENonterminals :: (Map.Map VisitIdentifier (Set.Set Identifier)),derivings_Inh_ENonterminals :: Derivings,importBlocks_Inh_ENonterminals :: PP_Doc,inhmap_Inh_ENonterminals :: (Map.Map NontermIdent Attributes),mainFile_Inh_ENonterminals :: String,mainName_Inh_ENonterminals :: String,moduleHeader_Inh_ENonterminals :: (String -> String -> String -> Bool -> String),options_Inh_ENonterminals :: Options,optionsLine_Inh_ENonterminals :: String,pragmaBlocks_Inh_ENonterminals :: String,synmap_Inh_ENonterminals :: (Map.Map NontermIdent Attributes),textBlocks_Inh_ENonterminals :: PP_Doc,typeSyns_Inh_ENonterminals :: TypeSyns,wrappers_Inh_ENonterminals :: (Set.Set NontermIdent)}
data Syn_ENonterminals = Syn_ENonterminals {appendCommon_Syn_ENonterminals :: ([PP_Doc]),appendMain_Syn_ENonterminals :: ([PP_Doc]),childvisit_Syn_ENonterminals :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),genProdIO_Syn_ENonterminals :: (IO ()),imports_Syn_ENonterminals :: ([PP_Doc]),output_Syn_ENonterminals :: PP_Doc,visitdefs_Syn_ENonterminals :: (Map.Map VisitIdentifier (Set.Set Identifier)),visituses_Syn_ENonterminals :: (Map.Map VisitIdentifier (Set.Set Identifier))}
wrap_ENonterminals :: T_ENonterminals ->
Inh_ENonterminals ->
Syn_ENonterminals
wrap_ENonterminals (T_ENonterminals sem ) (Inh_ENonterminals _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers ) =
(let ( _lhsOappendCommon,_lhsOappendMain,_lhsOchildvisit,_lhsOgenProdIO,_lhsOimports,_lhsOoutput,_lhsOvisitdefs,_lhsOvisituses) = sem _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIderivings _lhsIimportBlocks _lhsIinhmap _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks _lhsItypeSyns _lhsIwrappers
in (Syn_ENonterminals _lhsOappendCommon _lhsOappendMain _lhsOchildvisit _lhsOgenProdIO _lhsOimports _lhsOoutput _lhsOvisitdefs _lhsOvisituses ))
sem_ENonterminals_Cons :: T_ENonterminal ->
T_ENonterminals ->
T_ENonterminals
sem_ENonterminals_Cons (T_ENonterminal hd_ ) (T_ENonterminals tl_ ) =
(T_ENonterminals (\ _lhsIallchildvisit
_lhsIavisitdefs
_lhsIavisituses
_lhsIderivings
_lhsIimportBlocks
_lhsIinhmap
_lhsImainFile
_lhsImainName
_lhsImoduleHeader
_lhsIoptions
_lhsIoptionsLine
_lhsIpragmaBlocks
_lhsIsynmap
_lhsItextBlocks
_lhsItypeSyns
_lhsIwrappers ->
(let _lhsOappendCommon :: ([PP_Doc])
_lhsOappendMain :: ([PP_Doc])
_lhsOchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_lhsOgenProdIO :: (IO ())
_lhsOimports :: ([PP_Doc])
_lhsOoutput :: PP_Doc
_lhsOvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_hdOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdOderivings :: Derivings
_hdOimportBlocks :: PP_Doc
_hdOinhmap :: (Map.Map NontermIdent Attributes)
_hdOmainFile :: String
_hdOmainName :: String
_hdOmoduleHeader :: (String -> String -> String -> Bool -> String)
_hdOoptions :: Options
_hdOoptionsLine :: String
_hdOpragmaBlocks :: String
_hdOsynmap :: (Map.Map NontermIdent Attributes)
_hdOtextBlocks :: PP_Doc
_hdOtypeSyns :: TypeSyns
_hdOwrappers :: (Set.Set NontermIdent)
_tlOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_tlOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlOderivings :: Derivings
_tlOimportBlocks :: PP_Doc
_tlOinhmap :: (Map.Map NontermIdent Attributes)
_tlOmainFile :: String
_tlOmainName :: String
_tlOmoduleHeader :: (String -> String -> String -> Bool -> String)
_tlOoptions :: Options
_tlOoptionsLine :: String
_tlOpragmaBlocks :: String
_tlOsynmap :: (Map.Map NontermIdent Attributes)
_tlOtextBlocks :: PP_Doc
_tlOtypeSyns :: TypeSyns
_tlOwrappers :: (Set.Set NontermIdent)
_hdIappendCommon :: ( PP_Doc )
_hdIappendMain :: ( PP_Doc )
_hdIchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_hdIgenProdIO :: (IO ())
_hdIimports :: ([PP_Doc])
_hdIoutput :: PP_Doc
_hdIvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdIvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlIappendCommon :: ([PP_Doc])
_tlIappendMain :: ([PP_Doc])
_tlIchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_tlIgenProdIO :: (IO ())
_tlIimports :: ([PP_Doc])
_tlIoutput :: PP_Doc
_tlIvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlIvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
-- use rule "ExecutionPlan2Hs.ag"(line 610, column 51)
_lhsOappendCommon =
({-# LINE 610 "ExecutionPlan2Hs.ag" #-}
_hdIappendCommon : _tlIappendCommon
{-# LINE 1085 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 610, column 51)
_lhsOappendMain =
({-# LINE 610 "ExecutionPlan2Hs.ag" #-}
_hdIappendMain : _tlIappendMain
{-# LINE 1091 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 458, column 37)
_lhsOchildvisit =
({-# LINE 458 "ExecutionPlan2Hs.ag" #-}
_hdIchildvisit `Map.union` _tlIchildvisit
{-# LINE 1097 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 627, column 49)
_lhsOgenProdIO =
({-# LINE 627 "ExecutionPlan2Hs.ag" #-}
_hdIgenProdIO >> _tlIgenProdIO
{-# LINE 1103 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 626, column 47)
_lhsOimports =
({-# LINE 626 "ExecutionPlan2Hs.ag" #-}
_hdIimports ++ _tlIimports
{-# LINE 1109 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 56, column 45)
_lhsOoutput =
({-# LINE 56 "ExecutionPlan2Hs.ag" #-}
_hdIoutput >-< _tlIoutput
{-# LINE 1115 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 518, column 36)
_lhsOvisitdefs =
({-# LINE 518 "ExecutionPlan2Hs.ag" #-}
_hdIvisitdefs `uwSetUnion` _tlIvisitdefs
{-# LINE 1121 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 519, column 36)
_lhsOvisituses =
({-# LINE 519 "ExecutionPlan2Hs.ag" #-}
_hdIvisituses `uwSetUnion` _tlIvisituses
{-# LINE 1127 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOallchildvisit =
({-# LINE 457 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 1133 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 1139 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 1145 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOderivings =
({-# LINE 94 "ExecutionPlan2Hs.ag" #-}
_lhsIderivings
{-# LINE 1151 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOimportBlocks =
({-# LINE 25 "ExecutionPlan2Hs.ag" #-}
_lhsIimportBlocks
{-# LINE 1157 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOinhmap =
({-# LINE 188 "ExecutionPlan2Hs.ag" #-}
_lhsIinhmap
{-# LINE 1163 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOmainFile =
({-# LINE 29 "ExecutionPlan2Hs.ag" #-}
_lhsImainFile
{-# LINE 1169 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOmainName =
({-# LINE 31 "ExecutionPlan2Hs.ag" #-}
_lhsImainName
{-# LINE 1175 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOmoduleHeader =
({-# LINE 28 "ExecutionPlan2Hs.ag" #-}
_lhsImoduleHeader
{-# LINE 1181 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 1187 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOoptionsLine =
({-# LINE 30 "ExecutionPlan2Hs.ag" #-}
_lhsIoptionsLine
{-# LINE 1193 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOpragmaBlocks =
({-# LINE 26 "ExecutionPlan2Hs.ag" #-}
_lhsIpragmaBlocks
{-# LINE 1199 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOsynmap =
({-# LINE 189 "ExecutionPlan2Hs.ag" #-}
_lhsIsynmap
{-# LINE 1205 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOtextBlocks =
({-# LINE 27 "ExecutionPlan2Hs.ag" #-}
_lhsItextBlocks
{-# LINE 1211 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOtypeSyns =
({-# LINE 93 "ExecutionPlan2Hs.ag" #-}
_lhsItypeSyns
{-# LINE 1217 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOwrappers =
({-# LINE 55 "ExecutionPlan2Hs.ag" #-}
_lhsIwrappers
{-# LINE 1223 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOallchildvisit =
({-# LINE 457 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 1229 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 1235 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 1241 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOderivings =
({-# LINE 94 "ExecutionPlan2Hs.ag" #-}
_lhsIderivings
{-# LINE 1247 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOimportBlocks =
({-# LINE 25 "ExecutionPlan2Hs.ag" #-}
_lhsIimportBlocks
{-# LINE 1253 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOinhmap =
({-# LINE 188 "ExecutionPlan2Hs.ag" #-}
_lhsIinhmap
{-# LINE 1259 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOmainFile =
({-# LINE 29 "ExecutionPlan2Hs.ag" #-}
_lhsImainFile
{-# LINE 1265 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOmainName =
({-# LINE 31 "ExecutionPlan2Hs.ag" #-}
_lhsImainName
{-# LINE 1271 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOmoduleHeader =
({-# LINE 28 "ExecutionPlan2Hs.ag" #-}
_lhsImoduleHeader
{-# LINE 1277 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 1283 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOoptionsLine =
({-# LINE 30 "ExecutionPlan2Hs.ag" #-}
_lhsIoptionsLine
{-# LINE 1289 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOpragmaBlocks =
({-# LINE 26 "ExecutionPlan2Hs.ag" #-}
_lhsIpragmaBlocks
{-# LINE 1295 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOsynmap =
({-# LINE 189 "ExecutionPlan2Hs.ag" #-}
_lhsIsynmap
{-# LINE 1301 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOtextBlocks =
({-# LINE 27 "ExecutionPlan2Hs.ag" #-}
_lhsItextBlocks
{-# LINE 1307 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOtypeSyns =
({-# LINE 93 "ExecutionPlan2Hs.ag" #-}
_lhsItypeSyns
{-# LINE 1313 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOwrappers =
({-# LINE 55 "ExecutionPlan2Hs.ag" #-}
_lhsIwrappers
{-# LINE 1319 "ExecutionPlan2Hs.hs" #-}
)
( _hdIappendCommon,_hdIappendMain,_hdIchildvisit,_hdIgenProdIO,_hdIimports,_hdIoutput,_hdIvisitdefs,_hdIvisituses) =
hd_ _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOderivings _hdOimportBlocks _hdOinhmap _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOoptions _hdOoptionsLine _hdOpragmaBlocks _hdOsynmap _hdOtextBlocks _hdOtypeSyns _hdOwrappers
( _tlIappendCommon,_tlIappendMain,_tlIchildvisit,_tlIgenProdIO,_tlIimports,_tlIoutput,_tlIvisitdefs,_tlIvisituses) =
tl_ _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOderivings _tlOimportBlocks _tlOinhmap _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOoptions _tlOoptionsLine _tlOpragmaBlocks _tlOsynmap _tlOtextBlocks _tlOtypeSyns _tlOwrappers
in ( _lhsOappendCommon,_lhsOappendMain,_lhsOchildvisit,_lhsOgenProdIO,_lhsOimports,_lhsOoutput,_lhsOvisitdefs,_lhsOvisituses))) )
sem_ENonterminals_Nil :: T_ENonterminals
sem_ENonterminals_Nil =
(T_ENonterminals (\ _lhsIallchildvisit
_lhsIavisitdefs
_lhsIavisituses
_lhsIderivings
_lhsIimportBlocks
_lhsIinhmap
_lhsImainFile
_lhsImainName
_lhsImoduleHeader
_lhsIoptions
_lhsIoptionsLine
_lhsIpragmaBlocks
_lhsIsynmap
_lhsItextBlocks
_lhsItypeSyns
_lhsIwrappers ->
(let _lhsOappendCommon :: ([PP_Doc])
_lhsOappendMain :: ([PP_Doc])
_lhsOchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_lhsOgenProdIO :: (IO ())
_lhsOimports :: ([PP_Doc])
_lhsOoutput :: PP_Doc
_lhsOvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
-- use rule "ExecutionPlan2Hs.ag"(line 610, column 51)
_lhsOappendCommon =
({-# LINE 610 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 1356 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 610, column 51)
_lhsOappendMain =
({-# LINE 610 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 1362 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 458, column 37)
_lhsOchildvisit =
({-# LINE 458 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 1368 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 627, column 49)
_lhsOgenProdIO =
({-# LINE 627 "ExecutionPlan2Hs.ag" #-}
return ()
{-# LINE 1374 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 626, column 47)
_lhsOimports =
({-# LINE 626 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 1380 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 56, column 45)
_lhsOoutput =
({-# LINE 56 "ExecutionPlan2Hs.ag" #-}
empty
{-# LINE 1386 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 518, column 36)
_lhsOvisitdefs =
({-# LINE 518 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 1392 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 519, column 36)
_lhsOvisituses =
({-# LINE 519 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 1398 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOappendCommon,_lhsOappendMain,_lhsOchildvisit,_lhsOgenProdIO,_lhsOimports,_lhsOoutput,_lhsOvisitdefs,_lhsOvisituses))) )
-- EProduction -------------------------------------------------
{-
visit 0:
inherited attributes:
allchildvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
allstates : Set.Set StateIdentifier
avisitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
avisituses : Map.Map VisitIdentifier (Set.Set Identifier)
importBlocks : PP_Doc
inhmap : Attributes
initial : StateIdentifier
mainFile : String
mainName : String
moduleHeader : String -> String -> String -> Bool -> String
nt : NontermIdent
options : Options
optionsLine : String
pragmaBlocks : String
rename : Bool
synmap : Attributes
textBlocks : PP_Doc
synthesized attributes:
allvisits : [VisitStateState]
childvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
datatype : PP_Doc
genProdIO : IO ()
imports : [PP_Doc]
sem_nt : PP_Doc
sem_prod : PP_Doc
t_visits : PP_Doc
visitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
visituses : Map.Map VisitIdentifier (Set.Set Identifier)
alternatives:
alternative EProduction:
child con : {ConstructorIdent}
child rules : ERules
child children : EChildren
child visits : Visits
visit 0:
local args : _
local semname : _
local sem_prod : _
local statefns : _
local stargs : _
local stks : _
local stvisits : _
local stvs : _
local moduleName : _
local suffix : _
local outputfile : _
-}
-- cata
sem_EProduction :: EProduction ->
T_EProduction
sem_EProduction (EProduction _con _rules _children _visits ) =
(sem_EProduction_EProduction _con (sem_ERules _rules ) (sem_EChildren _children ) (sem_Visits _visits ) )
-- semantic domain
newtype T_EProduction = T_EProduction ((Map.Map VisitIdentifier (Identifier -> PP_Doc)) ->
(Set.Set StateIdentifier) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
PP_Doc ->
Attributes ->
StateIdentifier ->
String ->
String ->
(String -> String -> String -> Bool -> String) ->
NontermIdent ->
Options ->
String ->
String ->
Bool ->
Attributes ->
PP_Doc ->
( ([VisitStateState]),(Map.Map VisitIdentifier (Identifier -> PP_Doc)),PP_Doc,(IO ()),([PP_Doc]),PP_Doc,PP_Doc,PP_Doc,(Map.Map VisitIdentifier (Set.Set Identifier)),(Map.Map VisitIdentifier (Set.Set Identifier))))
data Inh_EProduction = Inh_EProduction {allchildvisit_Inh_EProduction :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),allstates_Inh_EProduction :: (Set.Set StateIdentifier),avisitdefs_Inh_EProduction :: (Map.Map VisitIdentifier (Set.Set Identifier)),avisituses_Inh_EProduction :: (Map.Map VisitIdentifier (Set.Set Identifier)),importBlocks_Inh_EProduction :: PP_Doc,inhmap_Inh_EProduction :: Attributes,initial_Inh_EProduction :: StateIdentifier,mainFile_Inh_EProduction :: String,mainName_Inh_EProduction :: String,moduleHeader_Inh_EProduction :: (String -> String -> String -> Bool -> String),nt_Inh_EProduction :: NontermIdent,options_Inh_EProduction :: Options,optionsLine_Inh_EProduction :: String,pragmaBlocks_Inh_EProduction :: String,rename_Inh_EProduction :: Bool,synmap_Inh_EProduction :: Attributes,textBlocks_Inh_EProduction :: PP_Doc}
data Syn_EProduction = Syn_EProduction {allvisits_Syn_EProduction :: ([VisitStateState]),childvisit_Syn_EProduction :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),datatype_Syn_EProduction :: PP_Doc,genProdIO_Syn_EProduction :: (IO ()),imports_Syn_EProduction :: ([PP_Doc]),sem_nt_Syn_EProduction :: PP_Doc,sem_prod_Syn_EProduction :: PP_Doc,t_visits_Syn_EProduction :: PP_Doc,visitdefs_Syn_EProduction :: (Map.Map VisitIdentifier (Set.Set Identifier)),visituses_Syn_EProduction :: (Map.Map VisitIdentifier (Set.Set Identifier))}
wrap_EProduction :: T_EProduction ->
Inh_EProduction ->
Syn_EProduction
wrap_EProduction (T_EProduction sem ) (Inh_EProduction _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsIrename _lhsIsynmap _lhsItextBlocks ) =
(let ( _lhsOallvisits,_lhsOchildvisit,_lhsOdatatype,_lhsOgenProdIO,_lhsOimports,_lhsOsem_nt,_lhsOsem_prod,_lhsOt_visits,_lhsOvisitdefs,_lhsOvisituses) = sem _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsIrename _lhsIsynmap _lhsItextBlocks
in (Syn_EProduction _lhsOallvisits _lhsOchildvisit _lhsOdatatype _lhsOgenProdIO _lhsOimports _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitdefs _lhsOvisituses ))
sem_EProduction_EProduction :: ConstructorIdent ->
T_ERules ->
T_EChildren ->
T_Visits ->
T_EProduction
sem_EProduction_EProduction con_ (T_ERules rules_ ) (T_EChildren children_ ) (T_Visits visits_ ) =
(T_EProduction (\ _lhsIallchildvisit
_lhsIallstates
_lhsIavisitdefs
_lhsIavisituses
_lhsIimportBlocks
_lhsIinhmap
_lhsIinitial
_lhsImainFile
_lhsImainName
_lhsImoduleHeader
_lhsInt
_lhsIoptions
_lhsIoptionsLine
_lhsIpragmaBlocks
_lhsIrename
_lhsIsynmap
_lhsItextBlocks ->
(let _lhsOdatatype :: PP_Doc
_lhsOsem_nt :: PP_Doc
_visitsOmrules :: (Map.Map Identifier PP_Doc)
_visitsOchildintros :: (Map.Map Identifier PP_Doc)
_rulesOusedrules :: (Set.Set Identifier)
_visitsOallintramap :: (Map.Map StateIdentifier (Set.Set String))
_visitsOterminaldefs :: (Set.Set String)
_visitsOruledefs :: (Map.Map Identifier (Set.Set String))
_visitsOruleuses :: (Map.Map Identifier (Set.Set String))
_lhsOimports :: ([PP_Doc])
_lhsOgenProdIO :: (IO ())
_lhsOchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_lhsOt_visits :: PP_Doc
_lhsOvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOallvisits :: ([VisitStateState])
_lhsOsem_prod :: PP_Doc
_rulesOoptions :: Options
_childrenOnt :: NontermIdent
_childrenOoptions :: Options
_visitsOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_visitsOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_visitsOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_visitsOinhmap :: Attributes
_visitsOnt :: NontermIdent
_visitsOoptions :: Options
_visitsOsynmap :: Attributes
_rulesImrules :: (Map.Map Identifier PP_Doc)
_rulesIruledefs :: (Map.Map Identifier (Set.Set String))
_rulesIruleuses :: (Map.Map Identifier (Set.Set String))
_rulesIsem_rules :: PP_Doc
_childrenIargnames :: ( [PP_Doc] )
_childrenIargnamesw :: ([PP_Doc])
_childrenIargtps :: ( [PP_Doc] )
_childrenIchildintros :: (Map.Map Identifier PP_Doc)
_childrenIdatatype :: ([PP_Doc])
_childrenIterminaldefs :: (Set.Set String)
_visitsIallvisits :: ([VisitStateState])
_visitsIchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_visitsIintramap :: (Map.Map StateIdentifier (Set.Set String))
_visitsIsem_visit :: ( [(StateIdentifier,PP_Doc)] )
_visitsIt_visits :: PP_Doc
_visitsIusedrules :: (Set.Set Identifier)
_visitsIvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_visitsIvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
-- "ExecutionPlan2Hs.ag"(line 121, column 17)
_lhsOdatatype =
({-# LINE 121 "ExecutionPlan2Hs.ag" #-}
conname _lhsIrename _lhsInt con_ >#< ppSpaced _childrenIdatatype
{-# LINE 1556 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 170, column 17)
_lhsOsem_nt =
({-# LINE 170 "ExecutionPlan2Hs.ag" #-}
"sem_" >|< _lhsInt >#< "(" >#< conname _lhsIrename _lhsInt con_ >#< ppSpaced _childrenIargnames >#< ")"
>#< "=" >#< "sem_" >|< _lhsInt >|< "_" >|< con_ >#< ppSpaced _childrenIargnamesw
{-# LINE 1563 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 336, column 17)
_args =
({-# LINE 336 "ExecutionPlan2Hs.ag" #-}
_childrenIargnames
{-# LINE 1569 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 337, column 17)
_semname =
({-# LINE 337 "ExecutionPlan2Hs.ag" #-}
"sem_" ++ show _lhsInt ++ "_" ++ show con_
{-# LINE 1575 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 338, column 17)
_sem_prod =
({-# LINE 338 "ExecutionPlan2Hs.ag" #-}
_semname >#< "::" >#< ppSpaced _childrenIargtps >#< "T_" >|< _lhsInt
>-< _semname >#< ppSpaced _args >#< "="
>#< "st" >|< _lhsIinitial >#< "where"
>-< (indent 3 $ vlist _statefns >-< _rulesIsem_rules)
{-# LINE 1584 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 342, column 17)
_statefns =
({-# LINE 342 "ExecutionPlan2Hs.ag" #-}
map (\st -> "st" >|< st >#< _stargs st >#< "=" >#<
"C_" >|< _lhsInt >|< "_s" >|< st >#< "k" >|< st >#< "where"
>-< indent 3 (_stks st >-< _stvs st)
) $ Set.toList _lhsIallstates
{-# LINE 1593 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 346, column 17)
_stargs =
({-# LINE 346 "ExecutionPlan2Hs.ag" #-}
\st -> ppSpaced $ Set.toList $ maybe Set.empty id $ Map.lookup st _visitsIintramap
{-# LINE 1599 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 347, column 17)
_stks =
({-# LINE 347 "ExecutionPlan2Hs.ag" #-}
\st -> "k" >|< st >#< "::" >#< "K_" >|< _lhsInt >|< "_s" >|< st >#< "t" >#< "->" >#< "t"
>-< vlist (map (\(v,f,t) -> "k" >|< st >#< "K_" >|< _lhsInt >|< "_v" >|< v >#< "="
>#< "v" >|< v) $ _stvisits st)
>-< if null (_stvisits st)
then "k" >|< st >#< "_" >#< "=" >#< "error \"unreachable\""
else empty
{-# LINE 1610 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 353, column 17)
_stvisits =
({-# LINE 353 "ExecutionPlan2Hs.ag" #-}
\st -> filter (\(v,f,t) -> f == st) _visitsIallvisits
{-# LINE 1616 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 354, column 17)
_stvs =
({-# LINE 354 "ExecutionPlan2Hs.ag" #-}
\st -> vlist $ map snd $ filter (\(f,pp) -> f == st) _visitsIsem_visit
{-# LINE 1622 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 355, column 17)
_visitsOmrules =
({-# LINE 355 "ExecutionPlan2Hs.ag" #-}
_rulesImrules
{-# LINE 1628 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 387, column 17)
_visitsOchildintros =
({-# LINE 387 "ExecutionPlan2Hs.ag" #-}
_childrenIchildintros
{-# LINE 1634 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 403, column 17)
_rulesOusedrules =
({-# LINE 403 "ExecutionPlan2Hs.ag" #-}
_visitsIusedrules
{-# LINE 1640 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 491, column 17)
_visitsOallintramap =
({-# LINE 491 "ExecutionPlan2Hs.ag" #-}
_visitsIintramap
{-# LINE 1646 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 492, column 17)
_visitsOterminaldefs =
({-# LINE 492 "ExecutionPlan2Hs.ag" #-}
_childrenIterminaldefs
{-# LINE 1652 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 511, column 17)
_visitsOruledefs =
({-# LINE 511 "ExecutionPlan2Hs.ag" #-}
_rulesIruledefs
{-# LINE 1658 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 512, column 17)
_visitsOruleuses =
({-# LINE 512 "ExecutionPlan2Hs.ag" #-}
_rulesIruleuses
{-# LINE 1664 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 630, column 17)
_lhsOimports =
({-# LINE 630 "ExecutionPlan2Hs.ag" #-}
[pp $ "import " ++ _moduleName ]
{-# LINE 1670 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 631, column 17)
_moduleName =
({-# LINE 631 "ExecutionPlan2Hs.ag" #-}
_lhsImainName ++ _suffix
{-# LINE 1676 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 632, column 17)
_suffix =
({-# LINE 632 "ExecutionPlan2Hs.ag" #-}
"_" ++ show _lhsInt ++ "_" ++ show con_
{-# LINE 1682 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 633, column 17)
_outputfile =
({-# LINE 633 "ExecutionPlan2Hs.ag" #-}
_lhsImainFile ++ _suffix ++ ".hs"
{-# LINE 1688 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 634, column 17)
_lhsOgenProdIO =
({-# LINE 634 "ExecutionPlan2Hs.ag" #-}
writeModule _outputfile
[ pp "{-# LANGUAGE Rank2Types, GADTs, EmptyDataDecls #-}"
, pp $ _lhsIpragmaBlocks
, pp $ _lhsIoptionsLine
, pp $ _lhsImoduleHeader _lhsImainName _suffix _semname True
, pp $ "import Control.Monad.Identity"
, pp $ "import " ++ _lhsImainName ++ "_common"
, _sem_prod
]
{-# LINE 1702 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 458, column 37)
_lhsOchildvisit =
({-# LINE 458 "ExecutionPlan2Hs.ag" #-}
_visitsIchildvisit
{-# LINE 1708 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 253, column 54)
_lhsOt_visits =
({-# LINE 253 "ExecutionPlan2Hs.ag" #-}
_visitsIt_visits
{-# LINE 1714 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 518, column 36)
_lhsOvisitdefs =
({-# LINE 518 "ExecutionPlan2Hs.ag" #-}
_visitsIvisitdefs
{-# LINE 1720 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 519, column 36)
_lhsOvisituses =
({-# LINE 519 "ExecutionPlan2Hs.ag" #-}
_visitsIvisituses
{-# LINE 1726 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (up)
_lhsOallvisits =
({-# LINE 209 "ExecutionPlan2Hs.ag" #-}
_visitsIallvisits
{-# LINE 1732 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (from local)
_lhsOsem_prod =
({-# LINE 309 "ExecutionPlan2Hs.ag" #-}
_sem_prod
{-# LINE 1738 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_rulesOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 1744 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_childrenOnt =
({-# LINE 124 "ExecutionPlan2Hs.ag" #-}
_lhsInt
{-# LINE 1750 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_childrenOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 1756 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_visitsOallchildvisit =
({-# LINE 457 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 1762 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_visitsOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 1768 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_visitsOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 1774 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_visitsOinhmap =
({-# LINE 194 "ExecutionPlan2Hs.ag" #-}
_lhsIinhmap
{-# LINE 1780 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_visitsOnt =
({-# LINE 253 "ExecutionPlan2Hs.ag" #-}
_lhsInt
{-# LINE 1786 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_visitsOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 1792 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_visitsOsynmap =
({-# LINE 195 "ExecutionPlan2Hs.ag" #-}
_lhsIsynmap
{-# LINE 1798 "ExecutionPlan2Hs.hs" #-}
)
( _rulesImrules,_rulesIruledefs,_rulesIruleuses,_rulesIsem_rules) =
rules_ _rulesOoptions _rulesOusedrules
( _childrenIargnames,_childrenIargnamesw,_childrenIargtps,_childrenIchildintros,_childrenIdatatype,_childrenIterminaldefs) =
children_ _childrenOnt _childrenOoptions
( _visitsIallvisits,_visitsIchildvisit,_visitsIintramap,_visitsIsem_visit,_visitsIt_visits,_visitsIusedrules,_visitsIvisitdefs,_visitsIvisituses) =
visits_ _visitsOallchildvisit _visitsOallintramap _visitsOavisitdefs _visitsOavisituses _visitsOchildintros _visitsOinhmap _visitsOmrules _visitsOnt _visitsOoptions _visitsOruledefs _visitsOruleuses _visitsOsynmap _visitsOterminaldefs
in ( _lhsOallvisits,_lhsOchildvisit,_lhsOdatatype,_lhsOgenProdIO,_lhsOimports,_lhsOsem_nt,_lhsOsem_prod,_lhsOt_visits,_lhsOvisitdefs,_lhsOvisituses))) )
-- EProductions ------------------------------------------------
{-
visit 0:
inherited attributes:
allchildvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
allstates : Set.Set StateIdentifier
avisitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
avisituses : Map.Map VisitIdentifier (Set.Set Identifier)
importBlocks : PP_Doc
inhmap : Attributes
initial : StateIdentifier
mainFile : String
mainName : String
moduleHeader : String -> String -> String -> Bool -> String
nt : NontermIdent
options : Options
optionsLine : String
pragmaBlocks : String
rename : Bool
synmap : Attributes
textBlocks : PP_Doc
synthesized attributes:
allvisits : [VisitStateState]
childvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
datatype : [PP_Doc]
genProdIO : IO ()
imports : [PP_Doc]
sem_nt : PP_Doc
sem_prod : PP_Doc
t_visits : PP_Doc
visitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
visituses : Map.Map VisitIdentifier (Set.Set Identifier)
alternatives:
alternative Cons:
child hd : EProduction
child tl : EProductions
alternative Nil:
-}
-- cata
sem_EProductions :: EProductions ->
T_EProductions
sem_EProductions list =
(Prelude.foldr sem_EProductions_Cons sem_EProductions_Nil (Prelude.map sem_EProduction list) )
-- semantic domain
newtype T_EProductions = T_EProductions ((Map.Map VisitIdentifier (Identifier -> PP_Doc)) ->
(Set.Set StateIdentifier) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
PP_Doc ->
Attributes ->
StateIdentifier ->
String ->
String ->
(String -> String -> String -> Bool -> String) ->
NontermIdent ->
Options ->
String ->
String ->
Bool ->
Attributes ->
PP_Doc ->
( ([VisitStateState]),(Map.Map VisitIdentifier (Identifier -> PP_Doc)),([PP_Doc]),(IO ()),([PP_Doc]),PP_Doc,PP_Doc,PP_Doc,(Map.Map VisitIdentifier (Set.Set Identifier)),(Map.Map VisitIdentifier (Set.Set Identifier))))
data Inh_EProductions = Inh_EProductions {allchildvisit_Inh_EProductions :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),allstates_Inh_EProductions :: (Set.Set StateIdentifier),avisitdefs_Inh_EProductions :: (Map.Map VisitIdentifier (Set.Set Identifier)),avisituses_Inh_EProductions :: (Map.Map VisitIdentifier (Set.Set Identifier)),importBlocks_Inh_EProductions :: PP_Doc,inhmap_Inh_EProductions :: Attributes,initial_Inh_EProductions :: StateIdentifier,mainFile_Inh_EProductions :: String,mainName_Inh_EProductions :: String,moduleHeader_Inh_EProductions :: (String -> String -> String -> Bool -> String),nt_Inh_EProductions :: NontermIdent,options_Inh_EProductions :: Options,optionsLine_Inh_EProductions :: String,pragmaBlocks_Inh_EProductions :: String,rename_Inh_EProductions :: Bool,synmap_Inh_EProductions :: Attributes,textBlocks_Inh_EProductions :: PP_Doc}
data Syn_EProductions = Syn_EProductions {allvisits_Syn_EProductions :: ([VisitStateState]),childvisit_Syn_EProductions :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),datatype_Syn_EProductions :: ([PP_Doc]),genProdIO_Syn_EProductions :: (IO ()),imports_Syn_EProductions :: ([PP_Doc]),sem_nt_Syn_EProductions :: PP_Doc,sem_prod_Syn_EProductions :: PP_Doc,t_visits_Syn_EProductions :: PP_Doc,visitdefs_Syn_EProductions :: (Map.Map VisitIdentifier (Set.Set Identifier)),visituses_Syn_EProductions :: (Map.Map VisitIdentifier (Set.Set Identifier))}
wrap_EProductions :: T_EProductions ->
Inh_EProductions ->
Syn_EProductions
wrap_EProductions (T_EProductions sem ) (Inh_EProductions _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsIrename _lhsIsynmap _lhsItextBlocks ) =
(let ( _lhsOallvisits,_lhsOchildvisit,_lhsOdatatype,_lhsOgenProdIO,_lhsOimports,_lhsOsem_nt,_lhsOsem_prod,_lhsOt_visits,_lhsOvisitdefs,_lhsOvisituses) = sem _lhsIallchildvisit _lhsIallstates _lhsIavisitdefs _lhsIavisituses _lhsIimportBlocks _lhsIinhmap _lhsIinitial _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsInt _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsIrename _lhsIsynmap _lhsItextBlocks
in (Syn_EProductions _lhsOallvisits _lhsOchildvisit _lhsOdatatype _lhsOgenProdIO _lhsOimports _lhsOsem_nt _lhsOsem_prod _lhsOt_visits _lhsOvisitdefs _lhsOvisituses ))
sem_EProductions_Cons :: T_EProduction ->
T_EProductions ->
T_EProductions
sem_EProductions_Cons (T_EProduction hd_ ) (T_EProductions tl_ ) =
(T_EProductions (\ _lhsIallchildvisit
_lhsIallstates
_lhsIavisitdefs
_lhsIavisituses
_lhsIimportBlocks
_lhsIinhmap
_lhsIinitial
_lhsImainFile
_lhsImainName
_lhsImoduleHeader
_lhsInt
_lhsIoptions
_lhsIoptionsLine
_lhsIpragmaBlocks
_lhsIrename
_lhsIsynmap
_lhsItextBlocks ->
(let _lhsOallvisits :: ([VisitStateState])
_lhsOt_visits :: PP_Doc
_lhsOchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_lhsOdatatype :: ([PP_Doc])
_lhsOgenProdIO :: (IO ())
_lhsOimports :: ([PP_Doc])
_lhsOsem_nt :: PP_Doc
_lhsOsem_prod :: PP_Doc
_lhsOvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_hdOallstates :: (Set.Set StateIdentifier)
_hdOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdOimportBlocks :: PP_Doc
_hdOinhmap :: Attributes
_hdOinitial :: StateIdentifier
_hdOmainFile :: String
_hdOmainName :: String
_hdOmoduleHeader :: (String -> String -> String -> Bool -> String)
_hdOnt :: NontermIdent
_hdOoptions :: Options
_hdOoptionsLine :: String
_hdOpragmaBlocks :: String
_hdOrename :: Bool
_hdOsynmap :: Attributes
_hdOtextBlocks :: PP_Doc
_tlOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_tlOallstates :: (Set.Set StateIdentifier)
_tlOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlOimportBlocks :: PP_Doc
_tlOinhmap :: Attributes
_tlOinitial :: StateIdentifier
_tlOmainFile :: String
_tlOmainName :: String
_tlOmoduleHeader :: (String -> String -> String -> Bool -> String)
_tlOnt :: NontermIdent
_tlOoptions :: Options
_tlOoptionsLine :: String
_tlOpragmaBlocks :: String
_tlOrename :: Bool
_tlOsynmap :: Attributes
_tlOtextBlocks :: PP_Doc
_hdIallvisits :: ([VisitStateState])
_hdIchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_hdIdatatype :: PP_Doc
_hdIgenProdIO :: (IO ())
_hdIimports :: ([PP_Doc])
_hdIsem_nt :: PP_Doc
_hdIsem_prod :: PP_Doc
_hdIt_visits :: PP_Doc
_hdIvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdIvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlIallvisits :: ([VisitStateState])
_tlIchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_tlIdatatype :: ([PP_Doc])
_tlIgenProdIO :: (IO ())
_tlIimports :: ([PP_Doc])
_tlIsem_nt :: PP_Doc
_tlIsem_prod :: PP_Doc
_tlIt_visits :: PP_Doc
_tlIvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlIvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
-- "ExecutionPlan2Hs.ag"(line 215, column 10)
_lhsOallvisits =
({-# LINE 215 "ExecutionPlan2Hs.ag" #-}
_hdIallvisits
{-# LINE 1966 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 256, column 10)
_lhsOt_visits =
({-# LINE 256 "ExecutionPlan2Hs.ag" #-}
_hdIt_visits
{-# LINE 1972 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 458, column 37)
_lhsOchildvisit =
({-# LINE 458 "ExecutionPlan2Hs.ag" #-}
_hdIchildvisit `Map.union` _tlIchildvisit
{-# LINE 1978 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 118, column 34)
_lhsOdatatype =
({-# LINE 118 "ExecutionPlan2Hs.ag" #-}
_hdIdatatype : _tlIdatatype
{-# LINE 1984 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 627, column 49)
_lhsOgenProdIO =
({-# LINE 627 "ExecutionPlan2Hs.ag" #-}
_hdIgenProdIO >> _tlIgenProdIO
{-# LINE 1990 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 626, column 47)
_lhsOimports =
({-# LINE 626 "ExecutionPlan2Hs.ag" #-}
_hdIimports ++ _tlIimports
{-# LINE 1996 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 168, column 44)
_lhsOsem_nt =
({-# LINE 168 "ExecutionPlan2Hs.ag" #-}
_hdIsem_nt >-< _tlIsem_nt
{-# LINE 2002 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 310, column 34)
_lhsOsem_prod =
({-# LINE 310 "ExecutionPlan2Hs.ag" #-}
_hdIsem_prod >-< _tlIsem_prod
{-# LINE 2008 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 518, column 36)
_lhsOvisitdefs =
({-# LINE 518 "ExecutionPlan2Hs.ag" #-}
_hdIvisitdefs `uwSetUnion` _tlIvisitdefs
{-# LINE 2014 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 519, column 36)
_lhsOvisituses =
({-# LINE 519 "ExecutionPlan2Hs.ag" #-}
_hdIvisituses `uwSetUnion` _tlIvisituses
{-# LINE 2020 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOallchildvisit =
({-# LINE 457 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 2026 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOallstates =
({-# LINE 313 "ExecutionPlan2Hs.ag" #-}
_lhsIallstates
{-# LINE 2032 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 2038 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 2044 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOimportBlocks =
({-# LINE 25 "ExecutionPlan2Hs.ag" #-}
_lhsIimportBlocks
{-# LINE 2050 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOinhmap =
({-# LINE 194 "ExecutionPlan2Hs.ag" #-}
_lhsIinhmap
{-# LINE 2056 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOinitial =
({-# LINE 312 "ExecutionPlan2Hs.ag" #-}
_lhsIinitial
{-# LINE 2062 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOmainFile =
({-# LINE 29 "ExecutionPlan2Hs.ag" #-}
_lhsImainFile
{-# LINE 2068 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOmainName =
({-# LINE 31 "ExecutionPlan2Hs.ag" #-}
_lhsImainName
{-# LINE 2074 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOmoduleHeader =
({-# LINE 28 "ExecutionPlan2Hs.ag" #-}
_lhsImoduleHeader
{-# LINE 2080 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOnt =
({-# LINE 253 "ExecutionPlan2Hs.ag" #-}
_lhsInt
{-# LINE 2086 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 2092 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOoptionsLine =
({-# LINE 30 "ExecutionPlan2Hs.ag" #-}
_lhsIoptionsLine
{-# LINE 2098 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOpragmaBlocks =
({-# LINE 26 "ExecutionPlan2Hs.ag" #-}
_lhsIpragmaBlocks
{-# LINE 2104 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOrename =
({-# LINE 42 "ExecutionPlan2Hs.ag" #-}
_lhsIrename
{-# LINE 2110 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOsynmap =
({-# LINE 195 "ExecutionPlan2Hs.ag" #-}
_lhsIsynmap
{-# LINE 2116 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOtextBlocks =
({-# LINE 27 "ExecutionPlan2Hs.ag" #-}
_lhsItextBlocks
{-# LINE 2122 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOallchildvisit =
({-# LINE 457 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 2128 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOallstates =
({-# LINE 313 "ExecutionPlan2Hs.ag" #-}
_lhsIallstates
{-# LINE 2134 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 2140 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 2146 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOimportBlocks =
({-# LINE 25 "ExecutionPlan2Hs.ag" #-}
_lhsIimportBlocks
{-# LINE 2152 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOinhmap =
({-# LINE 194 "ExecutionPlan2Hs.ag" #-}
_lhsIinhmap
{-# LINE 2158 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOinitial =
({-# LINE 312 "ExecutionPlan2Hs.ag" #-}
_lhsIinitial
{-# LINE 2164 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOmainFile =
({-# LINE 29 "ExecutionPlan2Hs.ag" #-}
_lhsImainFile
{-# LINE 2170 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOmainName =
({-# LINE 31 "ExecutionPlan2Hs.ag" #-}
_lhsImainName
{-# LINE 2176 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOmoduleHeader =
({-# LINE 28 "ExecutionPlan2Hs.ag" #-}
_lhsImoduleHeader
{-# LINE 2182 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOnt =
({-# LINE 253 "ExecutionPlan2Hs.ag" #-}
_lhsInt
{-# LINE 2188 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 2194 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOoptionsLine =
({-# LINE 30 "ExecutionPlan2Hs.ag" #-}
_lhsIoptionsLine
{-# LINE 2200 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOpragmaBlocks =
({-# LINE 26 "ExecutionPlan2Hs.ag" #-}
_lhsIpragmaBlocks
{-# LINE 2206 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOrename =
({-# LINE 42 "ExecutionPlan2Hs.ag" #-}
_lhsIrename
{-# LINE 2212 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOsynmap =
({-# LINE 195 "ExecutionPlan2Hs.ag" #-}
_lhsIsynmap
{-# LINE 2218 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOtextBlocks =
({-# LINE 27 "ExecutionPlan2Hs.ag" #-}
_lhsItextBlocks
{-# LINE 2224 "ExecutionPlan2Hs.hs" #-}
)
( _hdIallvisits,_hdIchildvisit,_hdIdatatype,_hdIgenProdIO,_hdIimports,_hdIsem_nt,_hdIsem_prod,_hdIt_visits,_hdIvisitdefs,_hdIvisituses) =
hd_ _hdOallchildvisit _hdOallstates _hdOavisitdefs _hdOavisituses _hdOimportBlocks _hdOinhmap _hdOinitial _hdOmainFile _hdOmainName _hdOmoduleHeader _hdOnt _hdOoptions _hdOoptionsLine _hdOpragmaBlocks _hdOrename _hdOsynmap _hdOtextBlocks
( _tlIallvisits,_tlIchildvisit,_tlIdatatype,_tlIgenProdIO,_tlIimports,_tlIsem_nt,_tlIsem_prod,_tlIt_visits,_tlIvisitdefs,_tlIvisituses) =
tl_ _tlOallchildvisit _tlOallstates _tlOavisitdefs _tlOavisituses _tlOimportBlocks _tlOinhmap _tlOinitial _tlOmainFile _tlOmainName _tlOmoduleHeader _tlOnt _tlOoptions _tlOoptionsLine _tlOpragmaBlocks _tlOrename _tlOsynmap _tlOtextBlocks
in ( _lhsOallvisits,_lhsOchildvisit,_lhsOdatatype,_lhsOgenProdIO,_lhsOimports,_lhsOsem_nt,_lhsOsem_prod,_lhsOt_visits,_lhsOvisitdefs,_lhsOvisituses))) )
sem_EProductions_Nil :: T_EProductions
sem_EProductions_Nil =
(T_EProductions (\ _lhsIallchildvisit
_lhsIallstates
_lhsIavisitdefs
_lhsIavisituses
_lhsIimportBlocks
_lhsIinhmap
_lhsIinitial
_lhsImainFile
_lhsImainName
_lhsImoduleHeader
_lhsInt
_lhsIoptions
_lhsIoptionsLine
_lhsIpragmaBlocks
_lhsIrename
_lhsIsynmap
_lhsItextBlocks ->
(let _lhsOallvisits :: ([VisitStateState])
_lhsOchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_lhsOdatatype :: ([PP_Doc])
_lhsOgenProdIO :: (IO ())
_lhsOimports :: ([PP_Doc])
_lhsOsem_nt :: PP_Doc
_lhsOsem_prod :: PP_Doc
_lhsOt_visits :: PP_Doc
_lhsOvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
-- "ExecutionPlan2Hs.ag"(line 216, column 10)
_lhsOallvisits =
({-# LINE 216 "ExecutionPlan2Hs.ag" #-}
error "Every nonterminal should have at least 1 production"
{-# LINE 2264 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 458, column 37)
_lhsOchildvisit =
({-# LINE 458 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 2270 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 118, column 34)
_lhsOdatatype =
({-# LINE 118 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 2276 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 627, column 49)
_lhsOgenProdIO =
({-# LINE 627 "ExecutionPlan2Hs.ag" #-}
return ()
{-# LINE 2282 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 626, column 47)
_lhsOimports =
({-# LINE 626 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 2288 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 168, column 44)
_lhsOsem_nt =
({-# LINE 168 "ExecutionPlan2Hs.ag" #-}
empty
{-# LINE 2294 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 310, column 34)
_lhsOsem_prod =
({-# LINE 310 "ExecutionPlan2Hs.ag" #-}
empty
{-# LINE 2300 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 253, column 54)
_lhsOt_visits =
({-# LINE 253 "ExecutionPlan2Hs.ag" #-}
empty
{-# LINE 2306 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 518, column 36)
_lhsOvisitdefs =
({-# LINE 518 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 2312 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 519, column 36)
_lhsOvisituses =
({-# LINE 519 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 2318 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOallvisits,_lhsOchildvisit,_lhsOdatatype,_lhsOgenProdIO,_lhsOimports,_lhsOsem_nt,_lhsOsem_prod,_lhsOt_visits,_lhsOvisitdefs,_lhsOvisituses))) )
-- ERule -------------------------------------------------------
{-
visit 0:
inherited attributes:
options : Options
usedrules : Set.Set Identifier
synthesized attributes:
mrules : Map.Map Identifier PP_Doc
ruledefs : Map.Map Identifier (Set.Set String)
ruleuses : Map.Map Identifier (Set.Set String)
sem_rules : PP_Doc
alternatives:
alternative ERule:
child name : {Identifier}
child pattern : Pattern
child rhs : Expression
child owrt : {Bool}
child origin : {String}
child explicit : {Bool}
visit 0:
local attrlst : _
local addbang : _
-}
-- cata
sem_ERule :: ERule ->
T_ERule
sem_ERule (ERule _name _pattern _rhs _owrt _origin _explicit ) =
(sem_ERule_ERule _name (sem_Pattern _pattern ) (sem_Expression _rhs ) _owrt _origin _explicit )
-- semantic domain
newtype T_ERule = T_ERule (Options ->
(Set.Set Identifier) ->
( (Map.Map Identifier PP_Doc),(Map.Map Identifier (Set.Set String)),(Map.Map Identifier (Set.Set String)),PP_Doc))
data Inh_ERule = Inh_ERule {options_Inh_ERule :: Options,usedrules_Inh_ERule :: (Set.Set Identifier)}
data Syn_ERule = Syn_ERule {mrules_Syn_ERule :: (Map.Map Identifier PP_Doc),ruledefs_Syn_ERule :: (Map.Map Identifier (Set.Set String)),ruleuses_Syn_ERule :: (Map.Map Identifier (Set.Set String)),sem_rules_Syn_ERule :: PP_Doc}
wrap_ERule :: T_ERule ->
Inh_ERule ->
Syn_ERule
wrap_ERule (T_ERule sem ) (Inh_ERule _lhsIoptions _lhsIusedrules ) =
(let ( _lhsOmrules,_lhsOruledefs,_lhsOruleuses,_lhsOsem_rules) = sem _lhsIoptions _lhsIusedrules
in (Syn_ERule _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules ))
sem_ERule_ERule :: Identifier ->
T_Pattern ->
T_Expression ->
Bool ->
String ->
Bool ->
T_ERule
sem_ERule_ERule name_ (T_Pattern pattern_ ) (T_Expression rhs_ ) owrt_ origin_ explicit_ =
(T_ERule (\ _lhsIoptions
_lhsIusedrules ->
(let _lhsOsem_rules :: PP_Doc
_lhsOmrules :: (Map.Map Identifier PP_Doc)
_patternOaddtilde :: (PP_Doc -> PP_Doc)
_lhsOruledefs :: (Map.Map Identifier (Set.Set String))
_lhsOruleuses :: (Map.Map Identifier (Set.Set String))
_patternIattrs :: (Set.Set String)
_patternIcopy :: Pattern
_patternIsem_lhs :: ( PP_Doc )
_rhsIattrs :: (Set.Set String)
_rhsIsemfunc :: PP_Doc
-- "ExecutionPlan2Hs.ag"(line 410, column 11)
_lhsOsem_rules =
({-# LINE 410 "ExecutionPlan2Hs.ag" #-}
if Set.member name_ _lhsIusedrules
then (name_ >#< "=" >#<
(if Set.null _rhsIattrs
then empty
else "\\" >|< _attrlst >#< "->")
>#< _rhsIsemfunc)
else empty
{-# LINE 2391 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 417, column 11)
_attrlst =
({-# LINE 417 "ExecutionPlan2Hs.ag" #-}
ppSpaced $ Set.toList _rhsIattrs
{-# LINE 2397 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 418, column 11)
_lhsOmrules =
({-# LINE 418 "ExecutionPlan2Hs.ag" #-}
Map.singleton name_ $ _addbang _patternIsem_lhs >#< "<-" >#< "return" >#< "$" >#< name_ >#< _attrlst
{-# LINE 2403 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 419, column 11)
_patternOaddtilde =
({-# LINE 419 "ExecutionPlan2Hs.ag" #-}
\x -> if cases _lhsIoptions then x else "~" >|< x
{-# LINE 2409 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 420, column 11)
_addbang =
({-# LINE 420 "ExecutionPlan2Hs.ag" #-}
\x -> if bangpats _lhsIoptions then "!" >|< x else x
{-# LINE 2415 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 507, column 11)
_lhsOruledefs =
({-# LINE 507 "ExecutionPlan2Hs.ag" #-}
Map.singleton name_ _patternIattrs
{-# LINE 2421 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 508, column 11)
_lhsOruleuses =
({-# LINE 508 "ExecutionPlan2Hs.ag" #-}
Map.singleton name_ _rhsIattrs
{-# LINE 2427 "ExecutionPlan2Hs.hs" #-}
)
( _patternIattrs,_patternIcopy,_patternIsem_lhs) =
pattern_ _patternOaddtilde
( _rhsIattrs,_rhsIsemfunc) =
rhs_
in ( _lhsOmrules,_lhsOruledefs,_lhsOruleuses,_lhsOsem_rules))) )
-- ERules ------------------------------------------------------
{-
visit 0:
inherited attributes:
options : Options
usedrules : Set.Set Identifier
synthesized attributes:
mrules : Map.Map Identifier PP_Doc
ruledefs : Map.Map Identifier (Set.Set String)
ruleuses : Map.Map Identifier (Set.Set String)
sem_rules : PP_Doc
alternatives:
alternative Cons:
child hd : ERule
child tl : ERules
alternative Nil:
-}
-- cata
sem_ERules :: ERules ->
T_ERules
sem_ERules list =
(Prelude.foldr sem_ERules_Cons sem_ERules_Nil (Prelude.map sem_ERule list) )
-- semantic domain
newtype T_ERules = T_ERules (Options ->
(Set.Set Identifier) ->
( (Map.Map Identifier PP_Doc),(Map.Map Identifier (Set.Set String)),(Map.Map Identifier (Set.Set String)),PP_Doc))
data Inh_ERules = Inh_ERules {options_Inh_ERules :: Options,usedrules_Inh_ERules :: (Set.Set Identifier)}
data Syn_ERules = Syn_ERules {mrules_Syn_ERules :: (Map.Map Identifier PP_Doc),ruledefs_Syn_ERules :: (Map.Map Identifier (Set.Set String)),ruleuses_Syn_ERules :: (Map.Map Identifier (Set.Set String)),sem_rules_Syn_ERules :: PP_Doc}
wrap_ERules :: T_ERules ->
Inh_ERules ->
Syn_ERules
wrap_ERules (T_ERules sem ) (Inh_ERules _lhsIoptions _lhsIusedrules ) =
(let ( _lhsOmrules,_lhsOruledefs,_lhsOruleuses,_lhsOsem_rules) = sem _lhsIoptions _lhsIusedrules
in (Syn_ERules _lhsOmrules _lhsOruledefs _lhsOruleuses _lhsOsem_rules ))
sem_ERules_Cons :: T_ERule ->
T_ERules ->
T_ERules
sem_ERules_Cons (T_ERule hd_ ) (T_ERules tl_ ) =
(T_ERules (\ _lhsIoptions
_lhsIusedrules ->
(let _lhsOmrules :: (Map.Map Identifier PP_Doc)
_lhsOruledefs :: (Map.Map Identifier (Set.Set String))
_lhsOruleuses :: (Map.Map Identifier (Set.Set String))
_lhsOsem_rules :: PP_Doc
_hdOoptions :: Options
_hdOusedrules :: (Set.Set Identifier)
_tlOoptions :: Options
_tlOusedrules :: (Set.Set Identifier)
_hdImrules :: (Map.Map Identifier PP_Doc)
_hdIruledefs :: (Map.Map Identifier (Set.Set String))
_hdIruleuses :: (Map.Map Identifier (Set.Set String))
_hdIsem_rules :: PP_Doc
_tlImrules :: (Map.Map Identifier PP_Doc)
_tlIruledefs :: (Map.Map Identifier (Set.Set String))
_tlIruleuses :: (Map.Map Identifier (Set.Set String))
_tlIsem_rules :: PP_Doc
-- use rule "ExecutionPlan2Hs.ag"(line 407, column 32)
_lhsOmrules =
({-# LINE 407 "ExecutionPlan2Hs.ag" #-}
_hdImrules `Map.union` _tlImrules
{-# LINE 2494 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 500, column 34)
_lhsOruledefs =
({-# LINE 500 "ExecutionPlan2Hs.ag" #-}
_hdIruledefs `uwSetUnion` _tlIruledefs
{-# LINE 2500 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 501, column 34)
_lhsOruleuses =
({-# LINE 501 "ExecutionPlan2Hs.ag" #-}
_hdIruleuses `uwSetUnion` _tlIruleuses
{-# LINE 2506 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 406, column 35)
_lhsOsem_rules =
({-# LINE 406 "ExecutionPlan2Hs.ag" #-}
_hdIsem_rules >-< _tlIsem_rules
{-# LINE 2512 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 2518 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOusedrules =
({-# LINE 397 "ExecutionPlan2Hs.ag" #-}
_lhsIusedrules
{-# LINE 2524 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 2530 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOusedrules =
({-# LINE 397 "ExecutionPlan2Hs.ag" #-}
_lhsIusedrules
{-# LINE 2536 "ExecutionPlan2Hs.hs" #-}
)
( _hdImrules,_hdIruledefs,_hdIruleuses,_hdIsem_rules) =
hd_ _hdOoptions _hdOusedrules
( _tlImrules,_tlIruledefs,_tlIruleuses,_tlIsem_rules) =
tl_ _tlOoptions _tlOusedrules
in ( _lhsOmrules,_lhsOruledefs,_lhsOruleuses,_lhsOsem_rules))) )
sem_ERules_Nil :: T_ERules
sem_ERules_Nil =
(T_ERules (\ _lhsIoptions
_lhsIusedrules ->
(let _lhsOmrules :: (Map.Map Identifier PP_Doc)
_lhsOruledefs :: (Map.Map Identifier (Set.Set String))
_lhsOruleuses :: (Map.Map Identifier (Set.Set String))
_lhsOsem_rules :: PP_Doc
-- use rule "ExecutionPlan2Hs.ag"(line 407, column 32)
_lhsOmrules =
({-# LINE 407 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 2555 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 500, column 34)
_lhsOruledefs =
({-# LINE 500 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 2561 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 501, column 34)
_lhsOruleuses =
({-# LINE 501 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 2567 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 406, column 35)
_lhsOsem_rules =
({-# LINE 406 "ExecutionPlan2Hs.ag" #-}
empty
{-# LINE 2573 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOmrules,_lhsOruledefs,_lhsOruleuses,_lhsOsem_rules))) )
-- ExecutionPlan -----------------------------------------------
{-
visit 0:
inherited attributes:
importBlocks : PP_Doc
inhmap : Map.Map NontermIdent Attributes
mainFile : String
mainName : String
moduleHeader : String -> String -> String -> Bool -> String
options : Options
optionsLine : String
pragmaBlocks : String
synmap : Map.Map NontermIdent Attributes
textBlocks : PP_Doc
synthesized attributes:
genIO : IO ()
output : PP_Doc
alternatives:
alternative ExecutionPlan:
child nonts : ENonterminals
child typeSyns : {TypeSyns}
child wrappers : {Set.Set NontermIdent}
child derivings : {Derivings}
visit 0:
local mainModuleFile : _
local genMainModule : _
local commonFile : _
local genCommonModule : _
-}
-- cata
sem_ExecutionPlan :: ExecutionPlan ->
T_ExecutionPlan
sem_ExecutionPlan (ExecutionPlan _nonts _typeSyns _wrappers _derivings ) =
(sem_ExecutionPlan_ExecutionPlan (sem_ENonterminals _nonts ) _typeSyns _wrappers _derivings )
-- semantic domain
newtype T_ExecutionPlan = T_ExecutionPlan (PP_Doc ->
(Map.Map NontermIdent Attributes) ->
String ->
String ->
(String -> String -> String -> Bool -> String) ->
Options ->
String ->
String ->
(Map.Map NontermIdent Attributes) ->
PP_Doc ->
( (IO ()),PP_Doc))
data Inh_ExecutionPlan = Inh_ExecutionPlan {importBlocks_Inh_ExecutionPlan :: PP_Doc,inhmap_Inh_ExecutionPlan :: (Map.Map NontermIdent Attributes),mainFile_Inh_ExecutionPlan :: String,mainName_Inh_ExecutionPlan :: String,moduleHeader_Inh_ExecutionPlan :: (String -> String -> String -> Bool -> String),options_Inh_ExecutionPlan :: Options,optionsLine_Inh_ExecutionPlan :: String,pragmaBlocks_Inh_ExecutionPlan :: String,synmap_Inh_ExecutionPlan :: (Map.Map NontermIdent Attributes),textBlocks_Inh_ExecutionPlan :: PP_Doc}
data Syn_ExecutionPlan = Syn_ExecutionPlan {genIO_Syn_ExecutionPlan :: (IO ()),output_Syn_ExecutionPlan :: PP_Doc}
wrap_ExecutionPlan :: T_ExecutionPlan ->
Inh_ExecutionPlan ->
Syn_ExecutionPlan
wrap_ExecutionPlan (T_ExecutionPlan sem ) (Inh_ExecutionPlan _lhsIimportBlocks _lhsIinhmap _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks ) =
(let ( _lhsOgenIO,_lhsOoutput) = sem _lhsIimportBlocks _lhsIinhmap _lhsImainFile _lhsImainName _lhsImoduleHeader _lhsIoptions _lhsIoptionsLine _lhsIpragmaBlocks _lhsIsynmap _lhsItextBlocks
in (Syn_ExecutionPlan _lhsOgenIO _lhsOoutput ))
sem_ExecutionPlan_ExecutionPlan :: T_ENonterminals ->
TypeSyns ->
(Set.Set NontermIdent) ->
Derivings ->
T_ExecutionPlan
sem_ExecutionPlan_ExecutionPlan (T_ENonterminals nonts_ ) typeSyns_ wrappers_ derivings_ =
(T_ExecutionPlan (\ _lhsIimportBlocks
_lhsIinhmap
_lhsImainFile
_lhsImainName
_lhsImoduleHeader
_lhsIoptions
_lhsIoptionsLine
_lhsIpragmaBlocks
_lhsIsynmap
_lhsItextBlocks ->
(let _lhsOoutput :: PP_Doc
_nontsOwrappers :: (Set.Set NontermIdent)
_nontsOtypeSyns :: TypeSyns
_nontsOderivings :: Derivings
_nontsOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_nontsOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_nontsOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOgenIO :: (IO ())
_nontsOimportBlocks :: PP_Doc
_nontsOinhmap :: (Map.Map NontermIdent Attributes)
_nontsOmainFile :: String
_nontsOmainName :: String
_nontsOmoduleHeader :: (String -> String -> String -> Bool -> String)
_nontsOoptions :: Options
_nontsOoptionsLine :: String
_nontsOpragmaBlocks :: String
_nontsOsynmap :: (Map.Map NontermIdent Attributes)
_nontsOtextBlocks :: PP_Doc
_nontsIappendCommon :: ([PP_Doc])
_nontsIappendMain :: ([PP_Doc])
_nontsIchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_nontsIgenProdIO :: (IO ())
_nontsIimports :: ([PP_Doc])
_nontsIoutput :: PP_Doc
_nontsIvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_nontsIvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
-- "ExecutionPlan2Hs.ag"(line 53, column 19)
_lhsOoutput =
({-# LINE 53 "ExecutionPlan2Hs.ag" #-}
_nontsIoutput
{-# LINE 2676 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 59, column 19)
_nontsOwrappers =
({-# LINE 59 "ExecutionPlan2Hs.ag" #-}
wrappers_
{-# LINE 2682 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 97, column 19)
_nontsOtypeSyns =
({-# LINE 97 "ExecutionPlan2Hs.ag" #-}
typeSyns_
{-# LINE 2688 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 98, column 19)
_nontsOderivings =
({-# LINE 98 "ExecutionPlan2Hs.ag" #-}
derivings_
{-# LINE 2694 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 463, column 19)
_nontsOallchildvisit =
({-# LINE 463 "ExecutionPlan2Hs.ag" #-}
_nontsIchildvisit
{-# LINE 2700 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 532, column 19)
_nontsOavisitdefs =
({-# LINE 532 "ExecutionPlan2Hs.ag" #-}
_nontsIvisitdefs
{-# LINE 2706 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 533, column 19)
_nontsOavisituses =
({-# LINE 533 "ExecutionPlan2Hs.ag" #-}
_nontsIvisituses
{-# LINE 2712 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 581, column 19)
_lhsOgenIO =
({-# LINE 581 "ExecutionPlan2Hs.ag" #-}
do _genMainModule
_genCommonModule
_nontsIgenProdIO
{-# LINE 2720 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 584, column 19)
_mainModuleFile =
({-# LINE 584 "ExecutionPlan2Hs.ag" #-}
_lhsImainFile ++ ".hs"
{-# LINE 2726 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 585, column 19)
_genMainModule =
({-# LINE 585 "ExecutionPlan2Hs.ag" #-}
writeModule _mainModuleFile
( [ pp $ "{-# LANGUAGE Rank2Types, GADTs, EmptyDataDecls #-}"
, pp $ _lhsIpragmaBlocks
, pp $ _lhsIoptionsLine
, pp $ _lhsImoduleHeader _lhsImainName "" "" False
, pp $ "import Control.Monad.Identity"
, pp $ "import " ++ _lhsImainName ++ "_common"
]
++ _nontsIimports
++ _nontsIappendMain
)
{-# LINE 2742 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 596, column 19)
_commonFile =
({-# LINE 596 "ExecutionPlan2Hs.ag" #-}
_lhsImainFile ++ "_common.hs"
{-# LINE 2748 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 597, column 19)
_genCommonModule =
({-# LINE 597 "ExecutionPlan2Hs.ag" #-}
writeModule _commonFile
( [ pp $ "{-# LANGUAGE Rank2Types, GADTs, EmptyDataDecls #-}"
, pp $ _lhsIpragmaBlocks
, pp $ _lhsIoptionsLine
, pp $ _lhsImoduleHeader _lhsImainName "_common" "" True
, pp $ "import Control.Monad.Identity"
, _lhsIimportBlocks
, _lhsItextBlocks
]
++ _nontsIappendCommon
)
{-# LINE 2764 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_nontsOimportBlocks =
({-# LINE 25 "ExecutionPlan2Hs.ag" #-}
_lhsIimportBlocks
{-# LINE 2770 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_nontsOinhmap =
({-# LINE 188 "ExecutionPlan2Hs.ag" #-}
_lhsIinhmap
{-# LINE 2776 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_nontsOmainFile =
({-# LINE 29 "ExecutionPlan2Hs.ag" #-}
_lhsImainFile
{-# LINE 2782 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_nontsOmainName =
({-# LINE 31 "ExecutionPlan2Hs.ag" #-}
_lhsImainName
{-# LINE 2788 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_nontsOmoduleHeader =
({-# LINE 28 "ExecutionPlan2Hs.ag" #-}
_lhsImoduleHeader
{-# LINE 2794 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_nontsOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 2800 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_nontsOoptionsLine =
({-# LINE 30 "ExecutionPlan2Hs.ag" #-}
_lhsIoptionsLine
{-# LINE 2806 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_nontsOpragmaBlocks =
({-# LINE 26 "ExecutionPlan2Hs.ag" #-}
_lhsIpragmaBlocks
{-# LINE 2812 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_nontsOsynmap =
({-# LINE 189 "ExecutionPlan2Hs.ag" #-}
_lhsIsynmap
{-# LINE 2818 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_nontsOtextBlocks =
({-# LINE 27 "ExecutionPlan2Hs.ag" #-}
_lhsItextBlocks
{-# LINE 2824 "ExecutionPlan2Hs.hs" #-}
)
( _nontsIappendCommon,_nontsIappendMain,_nontsIchildvisit,_nontsIgenProdIO,_nontsIimports,_nontsIoutput,_nontsIvisitdefs,_nontsIvisituses) =
nonts_ _nontsOallchildvisit _nontsOavisitdefs _nontsOavisituses _nontsOderivings _nontsOimportBlocks _nontsOinhmap _nontsOmainFile _nontsOmainName _nontsOmoduleHeader _nontsOoptions _nontsOoptionsLine _nontsOpragmaBlocks _nontsOsynmap _nontsOtextBlocks _nontsOtypeSyns _nontsOwrappers
in ( _lhsOgenIO,_lhsOoutput))) )
-- Expression --------------------------------------------------
{-
visit 0:
synthesized attributes:
attrs : Set.Set String
semfunc : PP_Doc
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 String),PP_Doc))
data Inh_Expression = Inh_Expression {}
data Syn_Expression = Syn_Expression {attrs_Syn_Expression :: (Set.Set String),semfunc_Syn_Expression :: PP_Doc}
wrap_Expression :: T_Expression ->
Inh_Expression ->
Syn_Expression
wrap_Expression (T_Expression sem ) (Inh_Expression ) =
(let ( _lhsOattrs,_lhsOsemfunc) = sem
in (Syn_Expression _lhsOattrs _lhsOsemfunc ))
sem_Expression_Expression :: Pos ->
([HsToken]) ->
T_Expression
sem_Expression_Expression pos_ tks_ =
(T_Expression (let _lhsOattrs :: (Set.Set String)
_lhsOsemfunc :: PP_Doc
-- "ExecutionPlan2Hs.ag"(line 448, column 16)
_lhsOattrs =
({-# LINE 448 "ExecutionPlan2Hs.ag" #-}
Set.unions $ map (\tok -> attrs_Syn_HsToken (wrap_HsToken (sem_HsToken tok) Inh_HsToken)) tks_
{-# LINE 2865 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 449, column 16)
_lhsOsemfunc =
({-# LINE 449 "ExecutionPlan2Hs.ag" #-}
vlist $ showTokens $ map (\tok -> tok_Syn_HsToken (wrap_HsToken (sem_HsToken tok) Inh_HsToken)) tks_
{-# LINE 2871 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOattrs,_lhsOsemfunc)) )
-- HsToken -----------------------------------------------------
{-
visit 0:
synthesized attributes:
attrs : Set.Set String
tok : (Pos,String)
alternatives:
alternative AGField:
child field : {Identifier}
child attr : {Identifier}
child pos : {Pos}
child rdesc : {Maybe String}
visit 0:
local addTrace : _
alternative AGLocal:
child var : {Identifier}
child pos : {Pos}
child rdesc : {Maybe String}
visit 0:
local tok : _
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 String),((Pos,String))))
data Inh_HsToken = Inh_HsToken {}
data Syn_HsToken = Syn_HsToken {attrs_Syn_HsToken :: (Set.Set String),tok_Syn_HsToken :: ((Pos,String))}
wrap_HsToken :: T_HsToken ->
Inh_HsToken ->
Syn_HsToken
wrap_HsToken (T_HsToken sem ) (Inh_HsToken ) =
(let ( _lhsOattrs,_lhsOtok) = sem
in (Syn_HsToken _lhsOattrs _lhsOtok ))
sem_HsToken_AGField :: Identifier ->
Identifier ->
Pos ->
(Maybe String) ->
T_HsToken
sem_HsToken_AGField field_ attr_ pos_ rdesc_ =
(T_HsToken (let _lhsOattrs :: (Set.Set String)
_lhsOtok :: ((Pos,String))
-- "ExecutionPlan2Hs.ag"(line 443, column 15)
_lhsOattrs =
({-# LINE 443 "ExecutionPlan2Hs.ag" #-}
Set.singleton $ attrname True field_ attr_
{-# LINE 2944 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 559, column 8)
_addTrace =
({-# LINE 559 "ExecutionPlan2Hs.ag" #-}
case rdesc_ of
Just d -> \x -> "(trace " ++ show (d ++ " -> " ++ show field_ ++ "." ++ show attr_) ++ " (" ++ x ++ "))"
Nothing -> id
{-# LINE 2952 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 562, column 8)
_lhsOtok =
({-# LINE 562 "ExecutionPlan2Hs.ag" #-}
(pos_, _addTrace $ attrname True field_ attr_)
{-# LINE 2958 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOattrs,_lhsOtok)) )
sem_HsToken_AGLocal :: Identifier ->
Pos ->
(Maybe String) ->
T_HsToken
sem_HsToken_AGLocal var_ pos_ rdesc_ =
(T_HsToken (let _lhsOattrs :: (Set.Set String)
_lhsOtok :: ((Pos,String))
-- "ExecutionPlan2Hs.ag"(line 442, column 15)
_lhsOattrs =
({-# LINE 442 "ExecutionPlan2Hs.ag" #-}
Set.singleton $ locname var_
{-# LINE 2972 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 555, column 15)
_tok =
({-# LINE 555 "ExecutionPlan2Hs.ag" #-}
(pos_,locname var_)
{-# LINE 2978 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (from local)
_lhsOtok =
({-# LINE 557 "ExecutionPlan2Hs.ag" #-}
_tok
{-# LINE 2984 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOattrs,_lhsOtok)) )
sem_HsToken_CharToken :: String ->
Pos ->
T_HsToken
sem_HsToken_CharToken value_ pos_ =
(T_HsToken (let _lhsOtok :: ((Pos,String))
_lhsOattrs :: (Set.Set String)
-- "ExecutionPlan2Hs.ag"(line 566, column 16)
_lhsOtok =
({-# LINE 566 "ExecutionPlan2Hs.ag" #-}
(pos_, if null value_
then ""
else showCharShort (head value_)
)
{-# LINE 3000 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 440, column 37)
_lhsOattrs =
({-# LINE 440 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 3006 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOattrs,_lhsOtok)) )
sem_HsToken_Err :: String ->
Pos ->
T_HsToken
sem_HsToken_Err mesg_ pos_ =
(T_HsToken (let _lhsOtok :: ((Pos,String))
_lhsOattrs :: (Set.Set String)
-- "ExecutionPlan2Hs.ag"(line 572, column 16)
_lhsOtok =
({-# LINE 572 "ExecutionPlan2Hs.ag" #-}
(pos_, "")
{-# LINE 3019 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 440, column 37)
_lhsOattrs =
({-# LINE 440 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 3025 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOattrs,_lhsOtok)) )
sem_HsToken_HsToken :: String ->
Pos ->
T_HsToken
sem_HsToken_HsToken value_ pos_ =
(T_HsToken (let _lhsOtok :: ((Pos,String))
_lhsOattrs :: (Set.Set String)
-- "ExecutionPlan2Hs.ag"(line 564, column 14)
_lhsOtok =
({-# LINE 564 "ExecutionPlan2Hs.ag" #-}
(pos_, value_)
{-# LINE 3038 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 440, column 37)
_lhsOattrs =
({-# LINE 440 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 3044 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOattrs,_lhsOtok)) )
sem_HsToken_StrToken :: String ->
Pos ->
T_HsToken
sem_HsToken_StrToken value_ pos_ =
(T_HsToken (let _lhsOtok :: ((Pos,String))
_lhsOattrs :: (Set.Set String)
-- "ExecutionPlan2Hs.ag"(line 571, column 16)
_lhsOtok =
({-# LINE 571 "ExecutionPlan2Hs.ag" #-}
(pos_, showStrShort value_)
{-# LINE 3057 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 440, column 37)
_lhsOattrs =
({-# LINE 440 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 3063 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOattrs,_lhsOtok)) )
-- HsTokens ----------------------------------------------------
{-
visit 0:
synthesized attribute:
tks : [(Pos,String)]
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 (( ([(Pos,String)])))
data Inh_HsTokens = Inh_HsTokens {}
data Syn_HsTokens = Syn_HsTokens {tks_Syn_HsTokens :: ([(Pos,String)])}
wrap_HsTokens :: T_HsTokens ->
Inh_HsTokens ->
Syn_HsTokens
wrap_HsTokens (T_HsTokens sem ) (Inh_HsTokens ) =
(let ( _lhsOtks) = sem
in (Syn_HsTokens _lhsOtks ))
sem_HsTokens_Cons :: T_HsToken ->
T_HsTokens ->
T_HsTokens
sem_HsTokens_Cons (T_HsToken hd_ ) (T_HsTokens tl_ ) =
(T_HsTokens (let _lhsOtks :: ([(Pos,String)])
_hdIattrs :: (Set.Set String)
_hdItok :: ((Pos,String))
_tlItks :: ([(Pos,String)])
-- "ExecutionPlan2Hs.ag"(line 551, column 10)
_lhsOtks =
({-# LINE 551 "ExecutionPlan2Hs.ag" #-}
_hdItok : _tlItks
{-# LINE 3104 "ExecutionPlan2Hs.hs" #-}
)
( _hdIattrs,_hdItok) =
hd_
( _tlItks) =
tl_
in ( _lhsOtks)) )
sem_HsTokens_Nil :: T_HsTokens
sem_HsTokens_Nil =
(T_HsTokens (let _lhsOtks :: ([(Pos,String)])
-- "ExecutionPlan2Hs.ag"(line 552, column 10)
_lhsOtks =
({-# LINE 552 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 3118 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOtks)) )
-- 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 _tokensItks :: ([(Pos,String)])
( _tokensItks) =
tokens_
in ( )) )
-- Pattern -----------------------------------------------------
{-
visit 0:
inherited attribute:
addtilde : PP_Doc -> PP_Doc
synthesized attributes:
attrs : Set.Set String
copy : SELF
sem_lhs : PP_Doc
alternatives:
alternative Alias:
child field : {Identifier}
child attr : {Identifier}
child pat : Pattern
child parts : Patterns
visit 0:
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 ((PP_Doc -> PP_Doc) ->
( (Set.Set String),Pattern ,( PP_Doc )))
data Inh_Pattern = Inh_Pattern {addtilde_Inh_Pattern :: (PP_Doc -> PP_Doc)}
data Syn_Pattern = Syn_Pattern {attrs_Syn_Pattern :: (Set.Set String),copy_Syn_Pattern :: Pattern ,sem_lhs_Syn_Pattern :: ( PP_Doc )}
wrap_Pattern :: T_Pattern ->
Inh_Pattern ->
Syn_Pattern
wrap_Pattern (T_Pattern sem ) (Inh_Pattern _lhsIaddtilde ) =
(let ( _lhsOattrs,_lhsOcopy,_lhsOsem_lhs) = sem _lhsIaddtilde
in (Syn_Pattern _lhsOattrs _lhsOcopy _lhsOsem_lhs ))
sem_Pattern_Alias :: Identifier ->
Identifier ->
T_Pattern ->
T_Patterns ->
T_Pattern
sem_Pattern_Alias field_ attr_ (T_Pattern pat_ ) (T_Patterns parts_ ) =
(T_Pattern (\ _lhsIaddtilde ->
(let _lhsOsem_lhs :: ( PP_Doc )
_lhsOattrs :: (Set.Set String)
_lhsOcopy :: Pattern
_patOaddtilde :: (PP_Doc -> PP_Doc)
_partsOaddtilde :: (PP_Doc -> PP_Doc)
_patIattrs :: (Set.Set String)
_patIcopy :: Pattern
_patIsem_lhs :: ( PP_Doc )
_partsIattrs :: (Set.Set String)
_partsIcopy :: Patterns
_partsIsem_lhs :: ([PP_Doc])
-- "ExecutionPlan2Hs.ag"(line 430, column 17)
_lhsOsem_lhs =
({-# LINE 430 "ExecutionPlan2Hs.ag" #-}
text $ attrname False field_ attr_
{-# LINE 3231 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 431, column 17)
_lhsOattrs =
({-# LINE 431 "ExecutionPlan2Hs.ag" #-}
Set.singleton $ attrname False field_ attr_
{-# LINE 3237 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_copy =
({-# LINE 23 "./Patterns.ag" #-}
Alias field_ attr_ _patIcopy _partsIcopy
{-# LINE 3243 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_lhsOcopy =
({-# LINE 23 "./Patterns.ag" #-}
_copy
{-# LINE 3249 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_patOaddtilde =
({-# LINE 425 "ExecutionPlan2Hs.ag" #-}
_lhsIaddtilde
{-# LINE 3255 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_partsOaddtilde =
({-# LINE 425 "ExecutionPlan2Hs.ag" #-}
_lhsIaddtilde
{-# LINE 3261 "ExecutionPlan2Hs.hs" #-}
)
( _patIattrs,_patIcopy,_patIsem_lhs) =
pat_ _patOaddtilde
( _partsIattrs,_partsIcopy,_partsIsem_lhs) =
parts_ _partsOaddtilde
in ( _lhsOattrs,_lhsOcopy,_lhsOsem_lhs))) )
sem_Pattern_Constr :: ConstructorIdent ->
T_Patterns ->
T_Pattern
sem_Pattern_Constr name_ (T_Patterns pats_ ) =
(T_Pattern (\ _lhsIaddtilde ->
(let _lhsOsem_lhs :: ( PP_Doc )
_patsOaddtilde :: (PP_Doc -> PP_Doc)
_lhsOattrs :: (Set.Set String)
_lhsOcopy :: Pattern
_patsIattrs :: (Set.Set String)
_patsIcopy :: Patterns
_patsIsem_lhs :: ([PP_Doc])
-- "ExecutionPlan2Hs.ag"(line 434, column 17)
_lhsOsem_lhs =
({-# LINE 434 "ExecutionPlan2Hs.ag" #-}
_lhsIaddtilde $ pp_parens $ name_ >#< hv_sp _patsIsem_lhs
{-# LINE 3284 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 435, column 17)
_patsOaddtilde =
({-# LINE 435 "ExecutionPlan2Hs.ag" #-}
id
{-# LINE 3290 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 427, column 36)
_lhsOattrs =
({-# LINE 427 "ExecutionPlan2Hs.ag" #-}
_patsIattrs
{-# LINE 3296 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_copy =
({-# LINE 23 "./Patterns.ag" #-}
Constr name_ _patsIcopy
{-# LINE 3302 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_lhsOcopy =
({-# LINE 23 "./Patterns.ag" #-}
_copy
{-# LINE 3308 "ExecutionPlan2Hs.hs" #-}
)
( _patsIattrs,_patsIcopy,_patsIsem_lhs) =
pats_ _patsOaddtilde
in ( _lhsOattrs,_lhsOcopy,_lhsOsem_lhs))) )
sem_Pattern_Irrefutable :: T_Pattern ->
T_Pattern
sem_Pattern_Irrefutable (T_Pattern pat_ ) =
(T_Pattern (\ _lhsIaddtilde ->
(let _lhsOsem_lhs :: ( PP_Doc )
_patOaddtilde :: (PP_Doc -> PP_Doc)
_lhsOattrs :: (Set.Set String)
_lhsOcopy :: Pattern
_patIattrs :: (Set.Set String)
_patIcopy :: Pattern
_patIsem_lhs :: ( PP_Doc )
-- "ExecutionPlan2Hs.ag"(line 437, column 17)
_lhsOsem_lhs =
({-# LINE 437 "ExecutionPlan2Hs.ag" #-}
text "~" >|< pp_parens _patIsem_lhs
{-# LINE 3328 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 438, column 17)
_patOaddtilde =
({-# LINE 438 "ExecutionPlan2Hs.ag" #-}
id
{-# LINE 3334 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 427, column 36)
_lhsOattrs =
({-# LINE 427 "ExecutionPlan2Hs.ag" #-}
_patIattrs
{-# LINE 3340 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_copy =
({-# LINE 23 "./Patterns.ag" #-}
Irrefutable _patIcopy
{-# LINE 3346 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_lhsOcopy =
({-# LINE 23 "./Patterns.ag" #-}
_copy
{-# LINE 3352 "ExecutionPlan2Hs.hs" #-}
)
( _patIattrs,_patIcopy,_patIsem_lhs) =
pat_ _patOaddtilde
in ( _lhsOattrs,_lhsOcopy,_lhsOsem_lhs))) )
sem_Pattern_Product :: Pos ->
T_Patterns ->
T_Pattern
sem_Pattern_Product pos_ (T_Patterns pats_ ) =
(T_Pattern (\ _lhsIaddtilde ->
(let _lhsOsem_lhs :: ( PP_Doc )
_patsOaddtilde :: (PP_Doc -> PP_Doc)
_lhsOattrs :: (Set.Set String)
_lhsOcopy :: Pattern
_patsIattrs :: (Set.Set String)
_patsIcopy :: Patterns
_patsIsem_lhs :: ([PP_Doc])
-- "ExecutionPlan2Hs.ag"(line 432, column 17)
_lhsOsem_lhs =
({-# LINE 432 "ExecutionPlan2Hs.ag" #-}
_lhsIaddtilde $ pp_block "(" ")" "," _patsIsem_lhs
{-# LINE 3373 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 433, column 17)
_patsOaddtilde =
({-# LINE 433 "ExecutionPlan2Hs.ag" #-}
id
{-# LINE 3379 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 427, column 36)
_lhsOattrs =
({-# LINE 427 "ExecutionPlan2Hs.ag" #-}
_patsIattrs
{-# LINE 3385 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_copy =
({-# LINE 23 "./Patterns.ag" #-}
Product pos_ _patsIcopy
{-# LINE 3391 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_lhsOcopy =
({-# LINE 23 "./Patterns.ag" #-}
_copy
{-# LINE 3397 "ExecutionPlan2Hs.hs" #-}
)
( _patsIattrs,_patsIcopy,_patsIsem_lhs) =
pats_ _patsOaddtilde
in ( _lhsOattrs,_lhsOcopy,_lhsOsem_lhs))) )
sem_Pattern_Underscore :: Pos ->
T_Pattern
sem_Pattern_Underscore pos_ =
(T_Pattern (\ _lhsIaddtilde ->
(let _lhsOsem_lhs :: ( PP_Doc )
_lhsOattrs :: (Set.Set String)
_lhsOcopy :: Pattern
-- "ExecutionPlan2Hs.ag"(line 436, column 17)
_lhsOsem_lhs =
({-# LINE 436 "ExecutionPlan2Hs.ag" #-}
text "_"
{-# LINE 3413 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 427, column 36)
_lhsOattrs =
({-# LINE 427 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 3419 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_copy =
({-# LINE 23 "./Patterns.ag" #-}
Underscore pos_
{-# LINE 3425 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_lhsOcopy =
({-# LINE 23 "./Patterns.ag" #-}
_copy
{-# LINE 3431 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOattrs,_lhsOcopy,_lhsOsem_lhs))) )
-- Patterns ----------------------------------------------------
{-
visit 0:
inherited attribute:
addtilde : PP_Doc -> PP_Doc
synthesized attributes:
attrs : Set.Set String
copy : SELF
sem_lhs : [PP_Doc]
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 ((PP_Doc -> PP_Doc) ->
( (Set.Set String),Patterns ,([PP_Doc])))
data Inh_Patterns = Inh_Patterns {addtilde_Inh_Patterns :: (PP_Doc -> PP_Doc)}
data Syn_Patterns = Syn_Patterns {attrs_Syn_Patterns :: (Set.Set String),copy_Syn_Patterns :: Patterns ,sem_lhs_Syn_Patterns :: ([PP_Doc])}
wrap_Patterns :: T_Patterns ->
Inh_Patterns ->
Syn_Patterns
wrap_Patterns (T_Patterns sem ) (Inh_Patterns _lhsIaddtilde ) =
(let ( _lhsOattrs,_lhsOcopy,_lhsOsem_lhs) = sem _lhsIaddtilde
in (Syn_Patterns _lhsOattrs _lhsOcopy _lhsOsem_lhs ))
sem_Patterns_Cons :: T_Pattern ->
T_Patterns ->
T_Patterns
sem_Patterns_Cons (T_Pattern hd_ ) (T_Patterns tl_ ) =
(T_Patterns (\ _lhsIaddtilde ->
(let _lhsOattrs :: (Set.Set String)
_lhsOsem_lhs :: ([PP_Doc])
_lhsOcopy :: Patterns
_hdOaddtilde :: (PP_Doc -> PP_Doc)
_tlOaddtilde :: (PP_Doc -> PP_Doc)
_hdIattrs :: (Set.Set String)
_hdIcopy :: Pattern
_hdIsem_lhs :: ( PP_Doc )
_tlIattrs :: (Set.Set String)
_tlIcopy :: Patterns
_tlIsem_lhs :: ([PP_Doc])
-- use rule "ExecutionPlan2Hs.ag"(line 427, column 36)
_lhsOattrs =
({-# LINE 427 "ExecutionPlan2Hs.ag" #-}
_hdIattrs `Set.union` _tlIattrs
{-# LINE 3489 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 424, column 29)
_lhsOsem_lhs =
({-# LINE 424 "ExecutionPlan2Hs.ag" #-}
_hdIsem_lhs : _tlIsem_lhs
{-# LINE 3495 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_copy =
({-# LINE 23 "./Patterns.ag" #-}
(:) _hdIcopy _tlIcopy
{-# LINE 3501 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_lhsOcopy =
({-# LINE 23 "./Patterns.ag" #-}
_copy
{-# LINE 3507 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOaddtilde =
({-# LINE 425 "ExecutionPlan2Hs.ag" #-}
_lhsIaddtilde
{-# LINE 3513 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOaddtilde =
({-# LINE 425 "ExecutionPlan2Hs.ag" #-}
_lhsIaddtilde
{-# LINE 3519 "ExecutionPlan2Hs.hs" #-}
)
( _hdIattrs,_hdIcopy,_hdIsem_lhs) =
hd_ _hdOaddtilde
( _tlIattrs,_tlIcopy,_tlIsem_lhs) =
tl_ _tlOaddtilde
in ( _lhsOattrs,_lhsOcopy,_lhsOsem_lhs))) )
sem_Patterns_Nil :: T_Patterns
sem_Patterns_Nil =
(T_Patterns (\ _lhsIaddtilde ->
(let _lhsOattrs :: (Set.Set String)
_lhsOsem_lhs :: ([PP_Doc])
_lhsOcopy :: Patterns
-- use rule "ExecutionPlan2Hs.ag"(line 427, column 36)
_lhsOattrs =
({-# LINE 427 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 3536 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 424, column 29)
_lhsOsem_lhs =
({-# LINE 424 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 3542 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_copy =
({-# LINE 23 "./Patterns.ag" #-}
[]
{-# LINE 3548 "ExecutionPlan2Hs.hs" #-}
)
-- self rule
_lhsOcopy =
({-# LINE 23 "./Patterns.ag" #-}
_copy
{-# LINE 3554 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOattrs,_lhsOcopy,_lhsOsem_lhs))) )
-- Visit -------------------------------------------------------
{-
visit 0:
inherited attributes:
allchildvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
allintramap : Map.Map StateIdentifier (Set.Set String)
avisitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
avisituses : Map.Map VisitIdentifier (Set.Set Identifier)
childintros : Map.Map Identifier PP_Doc
inhmap : Attributes
mrules : Map.Map Identifier PP_Doc
nt : NontermIdent
options : Options
ruledefs : Map.Map Identifier (Set.Set String)
ruleuses : Map.Map Identifier (Set.Set String)
synmap : Attributes
terminaldefs : Set.Set String
synthesized attributes:
allvisits : VisitStateState
childvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
intramap : Map.Map StateIdentifier (Set.Set String)
sem_visit : (StateIdentifier,PP_Doc)
t_visits : PP_Doc
usedrules : Set.Set Identifier
visitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
visituses : Map.Map VisitIdentifier (Set.Set Identifier)
alternatives:
alternative Visit:
child ident : {VisitIdentifier}
child from : {StateIdentifier}
child to : {StateIdentifier}
child inh : {Set.Set Identifier}
child syn : {Set.Set Identifier}
child steps : VisitSteps
visit 0:
local inhpart : _
local synpart : _
local inhargs : _
local synargs : _
local nextargs : _
local sem_steps : _
local addbang : _
local nextintra : _
local uses : _
local defs : _
-}
-- cata
sem_Visit :: Visit ->
T_Visit
sem_Visit (Visit _ident _from _to _inh _syn _steps ) =
(sem_Visit_Visit _ident _from _to _inh _syn (sem_VisitSteps _steps ) )
-- semantic domain
newtype T_Visit = T_Visit ((Map.Map VisitIdentifier (Identifier -> PP_Doc)) ->
(Map.Map StateIdentifier (Set.Set String)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map Identifier PP_Doc) ->
Attributes ->
(Map.Map Identifier PP_Doc) ->
NontermIdent ->
Options ->
(Map.Map Identifier (Set.Set String)) ->
(Map.Map Identifier (Set.Set String)) ->
Attributes ->
(Set.Set String) ->
( ( VisitStateState ),(Map.Map VisitIdentifier (Identifier -> PP_Doc)),(Map.Map StateIdentifier (Set.Set String)),( (StateIdentifier,PP_Doc) ),PP_Doc,(Set.Set Identifier),(Map.Map VisitIdentifier (Set.Set Identifier)),(Map.Map VisitIdentifier (Set.Set Identifier))))
data Inh_Visit = Inh_Visit {allchildvisit_Inh_Visit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),allintramap_Inh_Visit :: (Map.Map StateIdentifier (Set.Set String)),avisitdefs_Inh_Visit :: (Map.Map VisitIdentifier (Set.Set Identifier)),avisituses_Inh_Visit :: (Map.Map VisitIdentifier (Set.Set Identifier)),childintros_Inh_Visit :: (Map.Map Identifier PP_Doc),inhmap_Inh_Visit :: Attributes,mrules_Inh_Visit :: (Map.Map Identifier PP_Doc),nt_Inh_Visit :: NontermIdent,options_Inh_Visit :: Options,ruledefs_Inh_Visit :: (Map.Map Identifier (Set.Set String)),ruleuses_Inh_Visit :: (Map.Map Identifier (Set.Set String)),synmap_Inh_Visit :: Attributes,terminaldefs_Inh_Visit :: (Set.Set String)}
data Syn_Visit = Syn_Visit {allvisits_Syn_Visit :: ( VisitStateState ),childvisit_Syn_Visit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),intramap_Syn_Visit :: (Map.Map StateIdentifier (Set.Set String)),sem_visit_Syn_Visit :: ( (StateIdentifier,PP_Doc) ),t_visits_Syn_Visit :: PP_Doc,usedrules_Syn_Visit :: (Set.Set Identifier),visitdefs_Syn_Visit :: (Map.Map VisitIdentifier (Set.Set Identifier)),visituses_Syn_Visit :: (Map.Map VisitIdentifier (Set.Set Identifier))}
wrap_Visit :: T_Visit ->
Inh_Visit ->
Syn_Visit
wrap_Visit (T_Visit sem ) (Inh_Visit _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildintros _lhsIinhmap _lhsImrules _lhsInt _lhsIoptions _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs ) =
(let ( _lhsOallvisits,_lhsOchildvisit,_lhsOintramap,_lhsOsem_visit,_lhsOt_visits,_lhsOusedrules,_lhsOvisitdefs,_lhsOvisituses) = sem _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildintros _lhsIinhmap _lhsImrules _lhsInt _lhsIoptions _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs
in (Syn_Visit _lhsOallvisits _lhsOchildvisit _lhsOintramap _lhsOsem_visit _lhsOt_visits _lhsOusedrules _lhsOvisitdefs _lhsOvisituses ))
sem_Visit_Visit :: VisitIdentifier ->
StateIdentifier ->
StateIdentifier ->
(Set.Set Identifier) ->
(Set.Set Identifier) ->
T_VisitSteps ->
T_Visit
sem_Visit_Visit ident_ from_ to_ inh_ syn_ (T_VisitSteps steps_ ) =
(T_Visit (\ _lhsIallchildvisit
_lhsIallintramap
_lhsIavisitdefs
_lhsIavisituses
_lhsIchildintros
_lhsIinhmap
_lhsImrules
_lhsInt
_lhsIoptions
_lhsIruledefs
_lhsIruleuses
_lhsIsynmap
_lhsIterminaldefs ->
(let _lhsOallvisits :: ( VisitStateState )
_lhsOt_visits :: PP_Doc
_lhsOsem_visit :: ( (StateIdentifier,PP_Doc) )
_lhsOchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_lhsOintramap :: (Map.Map StateIdentifier (Set.Set String))
_lhsOvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOusedrules :: (Set.Set Identifier)
_stepsOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_stepsOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_stepsOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_stepsOchildintros :: (Map.Map Identifier PP_Doc)
_stepsOmrules :: (Map.Map Identifier PP_Doc)
_stepsOruledefs :: (Map.Map Identifier (Set.Set String))
_stepsOruleuses :: (Map.Map Identifier (Set.Set String))
_stepsIdefs :: (Set.Set String)
_stepsIsem_steps :: PP_Doc
_stepsIusedrules :: (Set.Set Identifier)
_stepsIuses :: (Set.Set String)
-- "ExecutionPlan2Hs.ag"(line 212, column 11)
_lhsOallvisits =
({-# LINE 212 "ExecutionPlan2Hs.ag" #-}
(ident_, from_, to_)
{-# LINE 3675 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 262, column 11)
_lhsOt_visits =
({-# LINE 262 "ExecutionPlan2Hs.ag" #-}
"type" >#< "T_" >|< _lhsInt >|< "_v" >|< ident_ >#< "=" >#< _inhpart >#<
"Identity" >#< "(" >#< _synpart >#< "T_" >|< _lhsInt >|< "_s" >|< to_ >#< ")"
{-# LINE 3682 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 264, column 11)
_inhpart =
({-# LINE 264 "ExecutionPlan2Hs.ag" #-}
if Set.null inh_
then empty
else (ppSpaced $ map (\i -> (\x -> pp_parens x >#< "->") $ typeToHaskellString (Just _lhsInt) []
$ fromJust $ Map.lookup i _lhsIinhmap) $ Set.toList inh_)
{-# LINE 3691 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 268, column 11)
_synpart =
({-# LINE 268 "ExecutionPlan2Hs.ag" #-}
if Set.null syn_
then empty
else (ppCommas $ map (\i -> typeToHaskellString (Just _lhsInt) [] $ fromJust $ Map.lookup i _lhsIsynmap) $ Set.toList syn_) >#< ","
{-# LINE 3699 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 364, column 11)
_lhsOsem_visit =
({-# LINE 364 "ExecutionPlan2Hs.ag" #-}
(from_, "v" >|< ident_ >#< "::" >#< "T_" >|< _lhsInt >|< "_v" >|< ident_
>-< "v" >|< ident_ >#< (_inhargs _LHS True) >#< "=" >#< "do"
>-< indent 3 _sem_steps )
{-# LINE 3707 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 367, column 11)
_inhargs =
({-# LINE 367 "ExecutionPlan2Hs.ag" #-}
\chn inh -> ppSpaced $ map (\arg -> attrname inh chn arg) $ Set.toList inh_
{-# LINE 3713 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 368, column 11)
_synargs =
({-# LINE 368 "ExecutionPlan2Hs.ag" #-}
ppSpaced $ map (\arg -> attrname False _LHS arg >#< ",") $ Set.toList syn_
{-# LINE 3719 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 369, column 11)
_nextargs =
({-# LINE 369 "ExecutionPlan2Hs.ag" #-}
ppSpaced $ Set.toList $ maybe Set.empty id $ Map.lookup to_ _lhsIallintramap
{-# LINE 3725 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 370, column 11)
_sem_steps =
({-# LINE 370 "ExecutionPlan2Hs.ag" #-}
_stepsIsem_steps
>-< "return" >#< "(" >#< _synargs >#< "st" >|< to_ >#< _nextargs >#< ")"
{-# LINE 3732 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 466, column 11)
_lhsOchildvisit =
({-# LINE 466 "ExecutionPlan2Hs.ag" #-}
Map.singleton ident_ $ \chn -> _addbang ("(" >#< ppSpaced (
map (\x -> attrname True chn x >#< ",") $ Set.toList syn_) >#< locname chn
>#< ")") >#< "<-" >#< "inv_" >|< _lhsInt >|< "_s" >|< from_ >#< locname chn
>#< "K_" >|< _lhsInt >|< "_v" >|< ident_ >#< _inhargs chn False
{-# LINE 3741 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 470, column 11)
_addbang =
({-# LINE 470 "ExecutionPlan2Hs.ag" #-}
\x -> if bangpats _lhsIoptions then "!" >|< x else x
{-# LINE 3747 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 495, column 11)
_lhsOintramap =
({-# LINE 495 "ExecutionPlan2Hs.ag" #-}
Map.singleton from_ $ (_uses `Set.union` _nextintra ) `Set.difference` _defs
{-# LINE 3753 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 496, column 11)
_nextintra =
({-# LINE 496 "ExecutionPlan2Hs.ag" #-}
maybe Set.empty id $ Map.lookup to_ _lhsIallintramap
{-# LINE 3759 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 497, column 11)
_uses =
({-# LINE 497 "ExecutionPlan2Hs.ag" #-}
_stepsIuses
{-# LINE 3765 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 498, column 11)
_defs =
({-# LINE 498 "ExecutionPlan2Hs.ag" #-}
_stepsIdefs `Set.union` (Set.map (lhsname True) inh_) `Set.union` _lhsIterminaldefs
{-# LINE 3771 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 522, column 11)
_lhsOvisitdefs =
({-# LINE 522 "ExecutionPlan2Hs.ag" #-}
Map.singleton ident_ syn_
{-# LINE 3777 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 523, column 11)
_lhsOvisituses =
({-# LINE 523 "ExecutionPlan2Hs.ag" #-}
Map.singleton ident_ inh_
{-# LINE 3783 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 396, column 56)
_lhsOusedrules =
({-# LINE 396 "ExecutionPlan2Hs.ag" #-}
_stepsIusedrules
{-# LINE 3789 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOallchildvisit =
({-# LINE 460 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 3795 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 3801 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 3807 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOchildintros =
({-# LINE 384 "ExecutionPlan2Hs.ag" #-}
_lhsIchildintros
{-# LINE 3813 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOmrules =
({-# LINE 373 "ExecutionPlan2Hs.ag" #-}
_lhsImrules
{-# LINE 3819 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOruledefs =
({-# LINE 503 "ExecutionPlan2Hs.ag" #-}
_lhsIruledefs
{-# LINE 3825 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOruleuses =
({-# LINE 504 "ExecutionPlan2Hs.ag" #-}
_lhsIruleuses
{-# LINE 3831 "ExecutionPlan2Hs.hs" #-}
)
( _stepsIdefs,_stepsIsem_steps,_stepsIusedrules,_stepsIuses) =
steps_ _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildintros _stepsOmrules _stepsOruledefs _stepsOruleuses
in ( _lhsOallvisits,_lhsOchildvisit,_lhsOintramap,_lhsOsem_visit,_lhsOt_visits,_lhsOusedrules,_lhsOvisitdefs,_lhsOvisituses))) )
-- VisitStep ---------------------------------------------------
{-
visit 0:
inherited attributes:
allchildvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
avisitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
avisituses : Map.Map VisitIdentifier (Set.Set Identifier)
childintros : Map.Map Identifier PP_Doc
mrules : Map.Map Identifier PP_Doc
ruledefs : Map.Map Identifier (Set.Set String)
ruleuses : Map.Map Identifier (Set.Set String)
synthesized attributes:
defs : Set.Set String
sem_steps : PP_Doc
usedrules : Set.Set Identifier
uses : Set.Set String
alternatives:
alternative ChildIntro:
child child : {Identifier}
alternative ChildVisit:
child child : {Identifier}
child nonterm : {NontermIdent}
child visit : {VisitIdentifier}
alternative Sem:
child name : {Identifier}
alternative Sim:
child steps : VisitSteps
-}
-- cata
sem_VisitStep :: VisitStep ->
T_VisitStep
sem_VisitStep (ChildIntro _child ) =
(sem_VisitStep_ChildIntro _child )
sem_VisitStep (ChildVisit _child _nonterm _visit ) =
(sem_VisitStep_ChildVisit _child _nonterm _visit )
sem_VisitStep (Sem _name ) =
(sem_VisitStep_Sem _name )
sem_VisitStep (Sim _steps ) =
(sem_VisitStep_Sim (sem_VisitSteps _steps ) )
-- semantic domain
newtype T_VisitStep = T_VisitStep ((Map.Map VisitIdentifier (Identifier -> PP_Doc)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map Identifier PP_Doc) ->
(Map.Map Identifier PP_Doc) ->
(Map.Map Identifier (Set.Set String)) ->
(Map.Map Identifier (Set.Set String)) ->
( (Set.Set String),PP_Doc,(Set.Set Identifier),(Set.Set String)))
data Inh_VisitStep = Inh_VisitStep {allchildvisit_Inh_VisitStep :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),avisitdefs_Inh_VisitStep :: (Map.Map VisitIdentifier (Set.Set Identifier)),avisituses_Inh_VisitStep :: (Map.Map VisitIdentifier (Set.Set Identifier)),childintros_Inh_VisitStep :: (Map.Map Identifier PP_Doc),mrules_Inh_VisitStep :: (Map.Map Identifier PP_Doc),ruledefs_Inh_VisitStep :: (Map.Map Identifier (Set.Set String)),ruleuses_Inh_VisitStep :: (Map.Map Identifier (Set.Set String))}
data Syn_VisitStep = Syn_VisitStep {defs_Syn_VisitStep :: (Set.Set String),sem_steps_Syn_VisitStep :: PP_Doc,usedrules_Syn_VisitStep :: (Set.Set Identifier),uses_Syn_VisitStep :: (Set.Set String)}
wrap_VisitStep :: T_VisitStep ->
Inh_VisitStep ->
Syn_VisitStep
wrap_VisitStep (T_VisitStep sem ) (Inh_VisitStep _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildintros _lhsImrules _lhsIruledefs _lhsIruleuses ) =
(let ( _lhsOdefs,_lhsOsem_steps,_lhsOusedrules,_lhsOuses) = sem _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildintros _lhsImrules _lhsIruledefs _lhsIruleuses
in (Syn_VisitStep _lhsOdefs _lhsOsem_steps _lhsOusedrules _lhsOuses ))
sem_VisitStep_ChildIntro :: Identifier ->
T_VisitStep
sem_VisitStep_ChildIntro child_ =
(T_VisitStep (\ _lhsIallchildvisit
_lhsIavisitdefs
_lhsIavisituses
_lhsIchildintros
_lhsImrules
_lhsIruledefs
_lhsIruleuses ->
(let _lhsOsem_steps :: PP_Doc
_lhsOdefs :: (Set.Set String)
_lhsOusedrules :: (Set.Set Identifier)
_lhsOuses :: (Set.Set String)
-- "ExecutionPlan2Hs.ag"(line 377, column 16)
_lhsOsem_steps =
({-# LINE 377 "ExecutionPlan2Hs.ag" #-}
maybe (error $ "Child " ++ show child_ ++ " not found") id $ Map.lookup child_ _lhsIchildintros
{-# LINE 3910 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 540, column 16)
_lhsOdefs =
({-# LINE 540 "ExecutionPlan2Hs.ag" #-}
Set.singleton $ locname child_
{-# LINE 3916 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 396, column 56)
_lhsOusedrules =
({-# LINE 396 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 3922 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 536, column 38)
_lhsOuses =
({-# LINE 536 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 3928 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOdefs,_lhsOsem_steps,_lhsOusedrules,_lhsOuses))) )
sem_VisitStep_ChildVisit :: Identifier ->
NontermIdent ->
VisitIdentifier ->
T_VisitStep
sem_VisitStep_ChildVisit child_ nonterm_ visit_ =
(T_VisitStep (\ _lhsIallchildvisit
_lhsIavisitdefs
_lhsIavisituses
_lhsIchildintros
_lhsImrules
_lhsIruledefs
_lhsIruleuses ->
(let _lhsOsem_steps :: PP_Doc
_lhsOdefs :: (Set.Set String)
_lhsOuses :: (Set.Set String)
_lhsOusedrules :: (Set.Set Identifier)
-- "ExecutionPlan2Hs.ag"(line 378, column 16)
_lhsOsem_steps =
({-# LINE 378 "ExecutionPlan2Hs.ag" #-}
(maybe (error $ "Visit " ++ show visit_ ++ " not found") id $ Map.lookup visit_ _lhsIallchildvisit) $ child_
{-# LINE 3951 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 541, column 16)
_lhsOdefs =
({-# LINE 541 "ExecutionPlan2Hs.ag" #-}
maybe (error "Visit not found") (Set.map $ attrname True child_) $ Map.lookup visit_ _lhsIavisitdefs
{-# LINE 3957 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 542, column 16)
_lhsOuses =
({-# LINE 542 "ExecutionPlan2Hs.ag" #-}
Set.insert (locname child_) $
maybe (error "Visit not found") (Set.map $ attrname False child_) $ Map.lookup visit_ _lhsIavisituses
{-# LINE 3964 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 396, column 56)
_lhsOusedrules =
({-# LINE 396 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 3970 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOdefs,_lhsOsem_steps,_lhsOusedrules,_lhsOuses))) )
sem_VisitStep_Sem :: Identifier ->
T_VisitStep
sem_VisitStep_Sem name_ =
(T_VisitStep (\ _lhsIallchildvisit
_lhsIavisitdefs
_lhsIavisituses
_lhsIchildintros
_lhsImrules
_lhsIruledefs
_lhsIruleuses ->
(let _lhsOsem_steps :: PP_Doc
_lhsOusedrules :: (Set.Set Identifier)
_lhsOdefs :: (Set.Set String)
_lhsOuses :: (Set.Set String)
-- "ExecutionPlan2Hs.ag"(line 376, column 16)
_lhsOsem_steps =
({-# LINE 376 "ExecutionPlan2Hs.ag" #-}
maybe (error $ "Rule " ++ show name_ ++ " not found") id $ Map.lookup name_ _lhsImrules
{-# LINE 3991 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 400, column 9)
_lhsOusedrules =
({-# LINE 400 "ExecutionPlan2Hs.ag" #-}
Set.singleton name_
{-# LINE 3997 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 538, column 16)
_lhsOdefs =
({-# LINE 538 "ExecutionPlan2Hs.ag" #-}
maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruledefs
{-# LINE 4003 "ExecutionPlan2Hs.hs" #-}
)
-- "ExecutionPlan2Hs.ag"(line 539, column 16)
_lhsOuses =
({-# LINE 539 "ExecutionPlan2Hs.ag" #-}
maybe (error "Rule not found") id $ Map.lookup name_ _lhsIruleuses
{-# LINE 4009 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOdefs,_lhsOsem_steps,_lhsOusedrules,_lhsOuses))) )
sem_VisitStep_Sim :: T_VisitSteps ->
T_VisitStep
sem_VisitStep_Sim (T_VisitSteps steps_ ) =
(T_VisitStep (\ _lhsIallchildvisit
_lhsIavisitdefs
_lhsIavisituses
_lhsIchildintros
_lhsImrules
_lhsIruledefs
_lhsIruleuses ->
(let _lhsOdefs :: (Set.Set String)
_lhsOsem_steps :: PP_Doc
_lhsOusedrules :: (Set.Set Identifier)
_lhsOuses :: (Set.Set String)
_stepsOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_stepsOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_stepsOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_stepsOchildintros :: (Map.Map Identifier PP_Doc)
_stepsOmrules :: (Map.Map Identifier PP_Doc)
_stepsOruledefs :: (Map.Map Identifier (Set.Set String))
_stepsOruleuses :: (Map.Map Identifier (Set.Set String))
_stepsIdefs :: (Set.Set String)
_stepsIsem_steps :: PP_Doc
_stepsIusedrules :: (Set.Set Identifier)
_stepsIuses :: (Set.Set String)
-- use rule "ExecutionPlan2Hs.ag"(line 535, column 38)
_lhsOdefs =
({-# LINE 535 "ExecutionPlan2Hs.ag" #-}
_stepsIdefs
{-# LINE 4041 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 374, column 43)
_lhsOsem_steps =
({-# LINE 374 "ExecutionPlan2Hs.ag" #-}
_stepsIsem_steps
{-# LINE 4047 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 396, column 56)
_lhsOusedrules =
({-# LINE 396 "ExecutionPlan2Hs.ag" #-}
_stepsIusedrules
{-# LINE 4053 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 536, column 38)
_lhsOuses =
({-# LINE 536 "ExecutionPlan2Hs.ag" #-}
_stepsIuses
{-# LINE 4059 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOallchildvisit =
({-# LINE 460 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 4065 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 4071 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 4077 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOchildintros =
({-# LINE 384 "ExecutionPlan2Hs.ag" #-}
_lhsIchildintros
{-# LINE 4083 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOmrules =
({-# LINE 373 "ExecutionPlan2Hs.ag" #-}
_lhsImrules
{-# LINE 4089 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOruledefs =
({-# LINE 503 "ExecutionPlan2Hs.ag" #-}
_lhsIruledefs
{-# LINE 4095 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_stepsOruleuses =
({-# LINE 504 "ExecutionPlan2Hs.ag" #-}
_lhsIruleuses
{-# LINE 4101 "ExecutionPlan2Hs.hs" #-}
)
( _stepsIdefs,_stepsIsem_steps,_stepsIusedrules,_stepsIuses) =
steps_ _stepsOallchildvisit _stepsOavisitdefs _stepsOavisituses _stepsOchildintros _stepsOmrules _stepsOruledefs _stepsOruleuses
in ( _lhsOdefs,_lhsOsem_steps,_lhsOusedrules,_lhsOuses))) )
-- VisitSteps --------------------------------------------------
{-
visit 0:
inherited attributes:
allchildvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
avisitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
avisituses : Map.Map VisitIdentifier (Set.Set Identifier)
childintros : Map.Map Identifier PP_Doc
mrules : Map.Map Identifier PP_Doc
ruledefs : Map.Map Identifier (Set.Set String)
ruleuses : Map.Map Identifier (Set.Set String)
synthesized attributes:
defs : Set.Set String
sem_steps : PP_Doc
usedrules : Set.Set Identifier
uses : Set.Set String
alternatives:
alternative Cons:
child hd : VisitStep
child tl : VisitSteps
alternative Nil:
-}
-- cata
sem_VisitSteps :: VisitSteps ->
T_VisitSteps
sem_VisitSteps list =
(Prelude.foldr sem_VisitSteps_Cons sem_VisitSteps_Nil (Prelude.map sem_VisitStep list) )
-- semantic domain
newtype T_VisitSteps = T_VisitSteps ((Map.Map VisitIdentifier (Identifier -> PP_Doc)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map Identifier PP_Doc) ->
(Map.Map Identifier PP_Doc) ->
(Map.Map Identifier (Set.Set String)) ->
(Map.Map Identifier (Set.Set String)) ->
( (Set.Set String),PP_Doc,(Set.Set Identifier),(Set.Set String)))
data Inh_VisitSteps = Inh_VisitSteps {allchildvisit_Inh_VisitSteps :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),avisitdefs_Inh_VisitSteps :: (Map.Map VisitIdentifier (Set.Set Identifier)),avisituses_Inh_VisitSteps :: (Map.Map VisitIdentifier (Set.Set Identifier)),childintros_Inh_VisitSteps :: (Map.Map Identifier PP_Doc),mrules_Inh_VisitSteps :: (Map.Map Identifier PP_Doc),ruledefs_Inh_VisitSteps :: (Map.Map Identifier (Set.Set String)),ruleuses_Inh_VisitSteps :: (Map.Map Identifier (Set.Set String))}
data Syn_VisitSteps = Syn_VisitSteps {defs_Syn_VisitSteps :: (Set.Set String),sem_steps_Syn_VisitSteps :: PP_Doc,usedrules_Syn_VisitSteps :: (Set.Set Identifier),uses_Syn_VisitSteps :: (Set.Set String)}
wrap_VisitSteps :: T_VisitSteps ->
Inh_VisitSteps ->
Syn_VisitSteps
wrap_VisitSteps (T_VisitSteps sem ) (Inh_VisitSteps _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildintros _lhsImrules _lhsIruledefs _lhsIruleuses ) =
(let ( _lhsOdefs,_lhsOsem_steps,_lhsOusedrules,_lhsOuses) = sem _lhsIallchildvisit _lhsIavisitdefs _lhsIavisituses _lhsIchildintros _lhsImrules _lhsIruledefs _lhsIruleuses
in (Syn_VisitSteps _lhsOdefs _lhsOsem_steps _lhsOusedrules _lhsOuses ))
sem_VisitSteps_Cons :: T_VisitStep ->
T_VisitSteps ->
T_VisitSteps
sem_VisitSteps_Cons (T_VisitStep hd_ ) (T_VisitSteps tl_ ) =
(T_VisitSteps (\ _lhsIallchildvisit
_lhsIavisitdefs
_lhsIavisituses
_lhsIchildintros
_lhsImrules
_lhsIruledefs
_lhsIruleuses ->
(let _lhsOdefs :: (Set.Set String)
_lhsOsem_steps :: PP_Doc
_lhsOusedrules :: (Set.Set Identifier)
_lhsOuses :: (Set.Set String)
_hdOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_hdOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdOchildintros :: (Map.Map Identifier PP_Doc)
_hdOmrules :: (Map.Map Identifier PP_Doc)
_hdOruledefs :: (Map.Map Identifier (Set.Set String))
_hdOruleuses :: (Map.Map Identifier (Set.Set String))
_tlOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_tlOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlOchildintros :: (Map.Map Identifier PP_Doc)
_tlOmrules :: (Map.Map Identifier PP_Doc)
_tlOruledefs :: (Map.Map Identifier (Set.Set String))
_tlOruleuses :: (Map.Map Identifier (Set.Set String))
_hdIdefs :: (Set.Set String)
_hdIsem_steps :: PP_Doc
_hdIusedrules :: (Set.Set Identifier)
_hdIuses :: (Set.Set String)
_tlIdefs :: (Set.Set String)
_tlIsem_steps :: PP_Doc
_tlIusedrules :: (Set.Set Identifier)
_tlIuses :: (Set.Set String)
-- use rule "ExecutionPlan2Hs.ag"(line 535, column 38)
_lhsOdefs =
({-# LINE 535 "ExecutionPlan2Hs.ag" #-}
_hdIdefs `Set.union` _tlIdefs
{-# LINE 4191 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 374, column 43)
_lhsOsem_steps =
({-# LINE 374 "ExecutionPlan2Hs.ag" #-}
_hdIsem_steps >-< _tlIsem_steps
{-# LINE 4197 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 396, column 56)
_lhsOusedrules =
({-# LINE 396 "ExecutionPlan2Hs.ag" #-}
_hdIusedrules `Set.union` _tlIusedrules
{-# LINE 4203 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 536, column 38)
_lhsOuses =
({-# LINE 536 "ExecutionPlan2Hs.ag" #-}
_hdIuses `Set.union` _tlIuses
{-# LINE 4209 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOallchildvisit =
({-# LINE 460 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 4215 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 4221 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 4227 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOchildintros =
({-# LINE 384 "ExecutionPlan2Hs.ag" #-}
_lhsIchildintros
{-# LINE 4233 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOmrules =
({-# LINE 373 "ExecutionPlan2Hs.ag" #-}
_lhsImrules
{-# LINE 4239 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOruledefs =
({-# LINE 503 "ExecutionPlan2Hs.ag" #-}
_lhsIruledefs
{-# LINE 4245 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOruleuses =
({-# LINE 504 "ExecutionPlan2Hs.ag" #-}
_lhsIruleuses
{-# LINE 4251 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOallchildvisit =
({-# LINE 460 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 4257 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 4263 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 4269 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOchildintros =
({-# LINE 384 "ExecutionPlan2Hs.ag" #-}
_lhsIchildintros
{-# LINE 4275 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOmrules =
({-# LINE 373 "ExecutionPlan2Hs.ag" #-}
_lhsImrules
{-# LINE 4281 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOruledefs =
({-# LINE 503 "ExecutionPlan2Hs.ag" #-}
_lhsIruledefs
{-# LINE 4287 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOruleuses =
({-# LINE 504 "ExecutionPlan2Hs.ag" #-}
_lhsIruleuses
{-# LINE 4293 "ExecutionPlan2Hs.hs" #-}
)
( _hdIdefs,_hdIsem_steps,_hdIusedrules,_hdIuses) =
hd_ _hdOallchildvisit _hdOavisitdefs _hdOavisituses _hdOchildintros _hdOmrules _hdOruledefs _hdOruleuses
( _tlIdefs,_tlIsem_steps,_tlIusedrules,_tlIuses) =
tl_ _tlOallchildvisit _tlOavisitdefs _tlOavisituses _tlOchildintros _tlOmrules _tlOruledefs _tlOruleuses
in ( _lhsOdefs,_lhsOsem_steps,_lhsOusedrules,_lhsOuses))) )
sem_VisitSteps_Nil :: T_VisitSteps
sem_VisitSteps_Nil =
(T_VisitSteps (\ _lhsIallchildvisit
_lhsIavisitdefs
_lhsIavisituses
_lhsIchildintros
_lhsImrules
_lhsIruledefs
_lhsIruleuses ->
(let _lhsOdefs :: (Set.Set String)
_lhsOsem_steps :: PP_Doc
_lhsOusedrules :: (Set.Set Identifier)
_lhsOuses :: (Set.Set String)
-- use rule "ExecutionPlan2Hs.ag"(line 535, column 38)
_lhsOdefs =
({-# LINE 535 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 4317 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 374, column 43)
_lhsOsem_steps =
({-# LINE 374 "ExecutionPlan2Hs.ag" #-}
empty
{-# LINE 4323 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 396, column 56)
_lhsOusedrules =
({-# LINE 396 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 4329 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 536, column 38)
_lhsOuses =
({-# LINE 536 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 4335 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOdefs,_lhsOsem_steps,_lhsOusedrules,_lhsOuses))) )
-- Visits ------------------------------------------------------
{-
visit 0:
inherited attributes:
allchildvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
allintramap : Map.Map StateIdentifier (Set.Set String)
avisitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
avisituses : Map.Map VisitIdentifier (Set.Set Identifier)
childintros : Map.Map Identifier PP_Doc
inhmap : Attributes
mrules : Map.Map Identifier PP_Doc
nt : NontermIdent
options : Options
ruledefs : Map.Map Identifier (Set.Set String)
ruleuses : Map.Map Identifier (Set.Set String)
synmap : Attributes
terminaldefs : Set.Set String
synthesized attributes:
allvisits : [VisitStateState]
childvisit : Map.Map VisitIdentifier (Identifier -> PP_Doc)
intramap : Map.Map StateIdentifier (Set.Set String)
sem_visit : [(StateIdentifier,PP_Doc)]
t_visits : PP_Doc
usedrules : Set.Set Identifier
visitdefs : Map.Map VisitIdentifier (Set.Set Identifier)
visituses : Map.Map VisitIdentifier (Set.Set Identifier)
alternatives:
alternative Cons:
child hd : Visit
child tl : Visits
alternative Nil:
-}
-- cata
sem_Visits :: Visits ->
T_Visits
sem_Visits list =
(Prelude.foldr sem_Visits_Cons sem_Visits_Nil (Prelude.map sem_Visit list) )
-- semantic domain
newtype T_Visits = T_Visits ((Map.Map VisitIdentifier (Identifier -> PP_Doc)) ->
(Map.Map StateIdentifier (Set.Set String)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map VisitIdentifier (Set.Set Identifier)) ->
(Map.Map Identifier PP_Doc) ->
Attributes ->
(Map.Map Identifier PP_Doc) ->
NontermIdent ->
Options ->
(Map.Map Identifier (Set.Set String)) ->
(Map.Map Identifier (Set.Set String)) ->
Attributes ->
(Set.Set String) ->
( ([VisitStateState]),(Map.Map VisitIdentifier (Identifier -> PP_Doc)),(Map.Map StateIdentifier (Set.Set String)),( [(StateIdentifier,PP_Doc)] ),PP_Doc,(Set.Set Identifier),(Map.Map VisitIdentifier (Set.Set Identifier)),(Map.Map VisitIdentifier (Set.Set Identifier))))
data Inh_Visits = Inh_Visits {allchildvisit_Inh_Visits :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),allintramap_Inh_Visits :: (Map.Map StateIdentifier (Set.Set String)),avisitdefs_Inh_Visits :: (Map.Map VisitIdentifier (Set.Set Identifier)),avisituses_Inh_Visits :: (Map.Map VisitIdentifier (Set.Set Identifier)),childintros_Inh_Visits :: (Map.Map Identifier PP_Doc),inhmap_Inh_Visits :: Attributes,mrules_Inh_Visits :: (Map.Map Identifier PP_Doc),nt_Inh_Visits :: NontermIdent,options_Inh_Visits :: Options,ruledefs_Inh_Visits :: (Map.Map Identifier (Set.Set String)),ruleuses_Inh_Visits :: (Map.Map Identifier (Set.Set String)),synmap_Inh_Visits :: Attributes,terminaldefs_Inh_Visits :: (Set.Set String)}
data Syn_Visits = Syn_Visits {allvisits_Syn_Visits :: ([VisitStateState]),childvisit_Syn_Visits :: (Map.Map VisitIdentifier (Identifier -> PP_Doc)),intramap_Syn_Visits :: (Map.Map StateIdentifier (Set.Set String)),sem_visit_Syn_Visits :: ( [(StateIdentifier,PP_Doc)] ),t_visits_Syn_Visits :: PP_Doc,usedrules_Syn_Visits :: (Set.Set Identifier),visitdefs_Syn_Visits :: (Map.Map VisitIdentifier (Set.Set Identifier)),visituses_Syn_Visits :: (Map.Map VisitIdentifier (Set.Set Identifier))}
wrap_Visits :: T_Visits ->
Inh_Visits ->
Syn_Visits
wrap_Visits (T_Visits sem ) (Inh_Visits _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildintros _lhsIinhmap _lhsImrules _lhsInt _lhsIoptions _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs ) =
(let ( _lhsOallvisits,_lhsOchildvisit,_lhsOintramap,_lhsOsem_visit,_lhsOt_visits,_lhsOusedrules,_lhsOvisitdefs,_lhsOvisituses) = sem _lhsIallchildvisit _lhsIallintramap _lhsIavisitdefs _lhsIavisituses _lhsIchildintros _lhsIinhmap _lhsImrules _lhsInt _lhsIoptions _lhsIruledefs _lhsIruleuses _lhsIsynmap _lhsIterminaldefs
in (Syn_Visits _lhsOallvisits _lhsOchildvisit _lhsOintramap _lhsOsem_visit _lhsOt_visits _lhsOusedrules _lhsOvisitdefs _lhsOvisituses ))
sem_Visits_Cons :: T_Visit ->
T_Visits ->
T_Visits
sem_Visits_Cons (T_Visit hd_ ) (T_Visits tl_ ) =
(T_Visits (\ _lhsIallchildvisit
_lhsIallintramap
_lhsIavisitdefs
_lhsIavisituses
_lhsIchildintros
_lhsIinhmap
_lhsImrules
_lhsInt
_lhsIoptions
_lhsIruledefs
_lhsIruleuses
_lhsIsynmap
_lhsIterminaldefs ->
(let _lhsOallvisits :: ([VisitStateState])
_lhsOchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_lhsOintramap :: (Map.Map StateIdentifier (Set.Set String))
_lhsOsem_visit :: ( [(StateIdentifier,PP_Doc)] )
_lhsOt_visits :: PP_Doc
_lhsOusedrules :: (Set.Set Identifier)
_lhsOvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_hdOallintramap :: (Map.Map StateIdentifier (Set.Set String))
_hdOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdOchildintros :: (Map.Map Identifier PP_Doc)
_hdOinhmap :: Attributes
_hdOmrules :: (Map.Map Identifier PP_Doc)
_hdOnt :: NontermIdent
_hdOoptions :: Options
_hdOruledefs :: (Map.Map Identifier (Set.Set String))
_hdOruleuses :: (Map.Map Identifier (Set.Set String))
_hdOsynmap :: Attributes
_hdOterminaldefs :: (Set.Set String)
_tlOallchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_tlOallintramap :: (Map.Map StateIdentifier (Set.Set String))
_tlOavisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlOavisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlOchildintros :: (Map.Map Identifier PP_Doc)
_tlOinhmap :: Attributes
_tlOmrules :: (Map.Map Identifier PP_Doc)
_tlOnt :: NontermIdent
_tlOoptions :: Options
_tlOruledefs :: (Map.Map Identifier (Set.Set String))
_tlOruleuses :: (Map.Map Identifier (Set.Set String))
_tlOsynmap :: Attributes
_tlOterminaldefs :: (Set.Set String)
_hdIallvisits :: ( VisitStateState )
_hdIchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_hdIintramap :: (Map.Map StateIdentifier (Set.Set String))
_hdIsem_visit :: ( (StateIdentifier,PP_Doc) )
_hdIt_visits :: PP_Doc
_hdIusedrules :: (Set.Set Identifier)
_hdIvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_hdIvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlIallvisits :: ([VisitStateState])
_tlIchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_tlIintramap :: (Map.Map StateIdentifier (Set.Set String))
_tlIsem_visit :: ( [(StateIdentifier,PP_Doc)] )
_tlIt_visits :: PP_Doc
_tlIusedrules :: (Set.Set Identifier)
_tlIvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_tlIvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
-- use rule "ExecutionPlan2Hs.ag"(line 207, column 29)
_lhsOallvisits =
({-# LINE 207 "ExecutionPlan2Hs.ag" #-}
_hdIallvisits : _tlIallvisits
{-# LINE 4469 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 458, column 37)
_lhsOchildvisit =
({-# LINE 458 "ExecutionPlan2Hs.ag" #-}
_hdIchildvisit `Map.union` _tlIchildvisit
{-# LINE 4475 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 480, column 34)
_lhsOintramap =
({-# LINE 480 "ExecutionPlan2Hs.ag" #-}
_hdIintramap `uwSetUnion` _tlIintramap
{-# LINE 4481 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 361, column 29)
_lhsOsem_visit =
({-# LINE 361 "ExecutionPlan2Hs.ag" #-}
_hdIsem_visit : _tlIsem_visit
{-# LINE 4487 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 253, column 54)
_lhsOt_visits =
({-# LINE 253 "ExecutionPlan2Hs.ag" #-}
_hdIt_visits >-< _tlIt_visits
{-# LINE 4493 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 396, column 56)
_lhsOusedrules =
({-# LINE 396 "ExecutionPlan2Hs.ag" #-}
_hdIusedrules `Set.union` _tlIusedrules
{-# LINE 4499 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 518, column 36)
_lhsOvisitdefs =
({-# LINE 518 "ExecutionPlan2Hs.ag" #-}
_hdIvisitdefs `uwSetUnion` _tlIvisitdefs
{-# LINE 4505 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 519, column 36)
_lhsOvisituses =
({-# LINE 519 "ExecutionPlan2Hs.ag" #-}
_hdIvisituses `uwSetUnion` _tlIvisituses
{-# LINE 4511 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOallchildvisit =
({-# LINE 457 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 4517 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOallintramap =
({-# LINE 479 "ExecutionPlan2Hs.ag" #-}
_lhsIallintramap
{-# LINE 4523 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 4529 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 4535 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOchildintros =
({-# LINE 384 "ExecutionPlan2Hs.ag" #-}
_lhsIchildintros
{-# LINE 4541 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOinhmap =
({-# LINE 194 "ExecutionPlan2Hs.ag" #-}
_lhsIinhmap
{-# LINE 4547 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOmrules =
({-# LINE 373 "ExecutionPlan2Hs.ag" #-}
_lhsImrules
{-# LINE 4553 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOnt =
({-# LINE 253 "ExecutionPlan2Hs.ag" #-}
_lhsInt
{-# LINE 4559 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 4565 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOruledefs =
({-# LINE 503 "ExecutionPlan2Hs.ag" #-}
_lhsIruledefs
{-# LINE 4571 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOruleuses =
({-# LINE 504 "ExecutionPlan2Hs.ag" #-}
_lhsIruleuses
{-# LINE 4577 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOsynmap =
({-# LINE 195 "ExecutionPlan2Hs.ag" #-}
_lhsIsynmap
{-# LINE 4583 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_hdOterminaldefs =
({-# LINE 482 "ExecutionPlan2Hs.ag" #-}
_lhsIterminaldefs
{-# LINE 4589 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOallchildvisit =
({-# LINE 457 "ExecutionPlan2Hs.ag" #-}
_lhsIallchildvisit
{-# LINE 4595 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOallintramap =
({-# LINE 479 "ExecutionPlan2Hs.ag" #-}
_lhsIallintramap
{-# LINE 4601 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOavisitdefs =
({-# LINE 528 "ExecutionPlan2Hs.ag" #-}
_lhsIavisitdefs
{-# LINE 4607 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOavisituses =
({-# LINE 529 "ExecutionPlan2Hs.ag" #-}
_lhsIavisituses
{-# LINE 4613 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOchildintros =
({-# LINE 384 "ExecutionPlan2Hs.ag" #-}
_lhsIchildintros
{-# LINE 4619 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOinhmap =
({-# LINE 194 "ExecutionPlan2Hs.ag" #-}
_lhsIinhmap
{-# LINE 4625 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOmrules =
({-# LINE 373 "ExecutionPlan2Hs.ag" #-}
_lhsImrules
{-# LINE 4631 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOnt =
({-# LINE 253 "ExecutionPlan2Hs.ag" #-}
_lhsInt
{-# LINE 4637 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOoptions =
({-# LINE 41 "ExecutionPlan2Hs.ag" #-}
_lhsIoptions
{-# LINE 4643 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOruledefs =
({-# LINE 503 "ExecutionPlan2Hs.ag" #-}
_lhsIruledefs
{-# LINE 4649 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOruleuses =
({-# LINE 504 "ExecutionPlan2Hs.ag" #-}
_lhsIruleuses
{-# LINE 4655 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOsynmap =
({-# LINE 195 "ExecutionPlan2Hs.ag" #-}
_lhsIsynmap
{-# LINE 4661 "ExecutionPlan2Hs.hs" #-}
)
-- copy rule (down)
_tlOterminaldefs =
({-# LINE 482 "ExecutionPlan2Hs.ag" #-}
_lhsIterminaldefs
{-# LINE 4667 "ExecutionPlan2Hs.hs" #-}
)
( _hdIallvisits,_hdIchildvisit,_hdIintramap,_hdIsem_visit,_hdIt_visits,_hdIusedrules,_hdIvisitdefs,_hdIvisituses) =
hd_ _hdOallchildvisit _hdOallintramap _hdOavisitdefs _hdOavisituses _hdOchildintros _hdOinhmap _hdOmrules _hdOnt _hdOoptions _hdOruledefs _hdOruleuses _hdOsynmap _hdOterminaldefs
( _tlIallvisits,_tlIchildvisit,_tlIintramap,_tlIsem_visit,_tlIt_visits,_tlIusedrules,_tlIvisitdefs,_tlIvisituses) =
tl_ _tlOallchildvisit _tlOallintramap _tlOavisitdefs _tlOavisituses _tlOchildintros _tlOinhmap _tlOmrules _tlOnt _tlOoptions _tlOruledefs _tlOruleuses _tlOsynmap _tlOterminaldefs
in ( _lhsOallvisits,_lhsOchildvisit,_lhsOintramap,_lhsOsem_visit,_lhsOt_visits,_lhsOusedrules,_lhsOvisitdefs,_lhsOvisituses))) )
sem_Visits_Nil :: T_Visits
sem_Visits_Nil =
(T_Visits (\ _lhsIallchildvisit
_lhsIallintramap
_lhsIavisitdefs
_lhsIavisituses
_lhsIchildintros
_lhsIinhmap
_lhsImrules
_lhsInt
_lhsIoptions
_lhsIruledefs
_lhsIruleuses
_lhsIsynmap
_lhsIterminaldefs ->
(let _lhsOallvisits :: ([VisitStateState])
_lhsOchildvisit :: (Map.Map VisitIdentifier (Identifier -> PP_Doc))
_lhsOintramap :: (Map.Map StateIdentifier (Set.Set String))
_lhsOsem_visit :: ( [(StateIdentifier,PP_Doc)] )
_lhsOt_visits :: PP_Doc
_lhsOusedrules :: (Set.Set Identifier)
_lhsOvisitdefs :: (Map.Map VisitIdentifier (Set.Set Identifier))
_lhsOvisituses :: (Map.Map VisitIdentifier (Set.Set Identifier))
-- use rule "ExecutionPlan2Hs.ag"(line 207, column 29)
_lhsOallvisits =
({-# LINE 207 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 4701 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 458, column 37)
_lhsOchildvisit =
({-# LINE 458 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 4707 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 480, column 34)
_lhsOintramap =
({-# LINE 480 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 4713 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 361, column 29)
_lhsOsem_visit =
({-# LINE 361 "ExecutionPlan2Hs.ag" #-}
[]
{-# LINE 4719 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 253, column 54)
_lhsOt_visits =
({-# LINE 253 "ExecutionPlan2Hs.ag" #-}
empty
{-# LINE 4725 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 396, column 56)
_lhsOusedrules =
({-# LINE 396 "ExecutionPlan2Hs.ag" #-}
Set.empty
{-# LINE 4731 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 518, column 36)
_lhsOvisitdefs =
({-# LINE 518 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 4737 "ExecutionPlan2Hs.hs" #-}
)
-- use rule "ExecutionPlan2Hs.ag"(line 519, column 36)
_lhsOvisituses =
({-# LINE 519 "ExecutionPlan2Hs.ag" #-}
Map.empty
{-# LINE 4743 "ExecutionPlan2Hs.hs" #-}
)
in ( _lhsOallvisits,_lhsOchildvisit,_lhsOintramap,_lhsOsem_visit,_lhsOt_visits,_lhsOusedrules,_lhsOvisitdefs,_lhsOvisituses))) )