-- UUAGC 0.9.50.2 (src-ag/Language/EWE/CheckGrammar.ag) module Language.EWE.CheckGrammar where {-# LINE 2 "src-ag/Language/EWE/CheckGrammar.ag" #-} import qualified Data.Set as Set import qualified Data.Map as Map import Language.EWE.AbsSyn import Language.EWE.Utils {-# LINE 12 "src/Language/EWE/CheckGrammar.hs" #-} {-# LINE 109 "src-ag/Language/EWE/CheckGrammar.ag" #-} isLabelDef :: String -> Set.Set String -> Either String () isLabelDef str sets | str `Set.member` sets = Right () | otherwise = Left $ "Label: " ++ str ++ " is not defined " isLabelNotDef :: String -> Set.Set String -> Either String () isLabelNotDef str sets | str `Set.member` sets = Left $ "Label: " ++ str ++ " is already defined " | otherwise = Right () isMemRefDef :: String -> Map.Map String Int -> Either String () isMemRefDef str map | str `Map.member` map = Right () | otherwise = Left $ "Mem Ref: " ++ str ++ " is not defined" {-# LINE 29 "src/Language/EWE/CheckGrammar.hs" #-} -- Cond -------------------------------------------------------- {- alternatives: alternative CLET: alternative CLT: alternative CGET: alternative CGT: alternative CE: alternative CNE: -} -- cata sem_Cond :: Cond -> T_Cond sem_Cond (CLET) = (sem_Cond_CLET) sem_Cond (CLT) = (sem_Cond_CLT) sem_Cond (CGET) = (sem_Cond_CGET) sem_Cond (CGT) = (sem_Cond_CGT) sem_Cond (CE) = (sem_Cond_CE) sem_Cond (CNE) = (sem_Cond_CNE) -- semantic domain type T_Cond = ( ) data Inh_Cond = Inh_Cond {} data Syn_Cond = Syn_Cond {} wrap_Cond :: T_Cond -> Inh_Cond -> Syn_Cond wrap_Cond sem (Inh_Cond) = (let ( ) = sem in (Syn_Cond)) sem_Cond_CLET :: T_Cond sem_Cond_CLET = (let in ( )) sem_Cond_CLT :: T_Cond sem_Cond_CLT = (let in ( )) sem_Cond_CGET :: T_Cond sem_Cond_CGET = (let in ( )) sem_Cond_CGT :: T_Cond sem_Cond_CGT = (let in ( )) sem_Cond_CE :: T_Cond sem_Cond_CE = (let in ( )) sem_Cond_CNE :: T_Cond sem_Cond_CNE = (let in ( )) -- Equ --------------------------------------------------------- {- visit 0: chained attribute: idMemRef : Map.Map String Int synthesized attribute: res : Either String () alternatives: alternative Tuple: child x1 : {String} child x2 : {Int} -} -- cata sem_Equ :: Equ -> T_Equ sem_Equ ( x1,x2) = (sem_Equ_Tuple x1 x2) -- semantic domain type T_Equ = (Map.Map String Int) -> ( (Map.Map String Int),(Either String ())) data Inh_Equ = Inh_Equ {idMemRef_Inh_Equ :: (Map.Map String Int)} data Syn_Equ = Syn_Equ {idMemRef_Syn_Equ :: (Map.Map String Int),res_Syn_Equ :: (Either String ())} wrap_Equ :: T_Equ -> Inh_Equ -> Syn_Equ wrap_Equ sem (Inh_Equ _lhsIidMemRef) = (let ( _lhsOidMemRef,_lhsOres) = sem _lhsIidMemRef in (Syn_Equ _lhsOidMemRef _lhsOres)) sem_Equ_Tuple :: String -> Int -> T_Equ sem_Equ_Tuple x1_ x2_ = (\ _lhsIidMemRef -> (let _lhsOres :: (Either String ()) _lhsOidMemRef :: (Map.Map String Int) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 46, column 11) _lhsOres = ({-# LINE 46 "src-ag/Language/EWE/CheckGrammar.ag" #-} if x1_ `Map.member` _lhsIidMemRef then Left $ x1_ ++ " was already defined " else Right () {-# LINE 130 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 46, column 11) _lhsOidMemRef = ({-# LINE 50 "src-ag/Language/EWE/CheckGrammar.ag" #-} Map.insert x1_ x2_ _lhsIidMemRef {-# LINE 136 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOidMemRef,_lhsOres))) -- Equates ----------------------------------------------------- {- visit 0: chained attribute: idMemRef : Map.Map String Int alternatives: alternative Cons: child hd : Equ child tl : Equates alternative Nil: -} -- cata sem_Equates :: Equates -> T_Equates sem_Equates list = (Prelude.foldr sem_Equates_Cons sem_Equates_Nil (Prelude.map sem_Equ list)) -- semantic domain type T_Equates = (Map.Map String Int) -> ( (Map.Map String Int)) data Inh_Equates = Inh_Equates {idMemRef_Inh_Equates :: (Map.Map String Int)} data Syn_Equates = Syn_Equates {idMemRef_Syn_Equates :: (Map.Map String Int)} wrap_Equates :: T_Equates -> Inh_Equates -> Syn_Equates wrap_Equates sem (Inh_Equates _lhsIidMemRef) = (let ( _lhsOidMemRef) = sem _lhsIidMemRef in (Syn_Equates _lhsOidMemRef)) sem_Equates_Cons :: T_Equ -> T_Equates -> T_Equates sem_Equates_Cons hd_ tl_ = (\ _lhsIidMemRef -> (let _lhsOidMemRef :: (Map.Map String Int) _hdOidMemRef :: (Map.Map String Int) _tlOidMemRef :: (Map.Map String Int) _hdIidMemRef :: (Map.Map String Int) _hdIres :: (Either String ()) _tlIidMemRef :: (Map.Map String Int) -- copy rule (up) _lhsOidMemRef = ({-# LINE 13 "src-ag/Language/EWE/CheckGrammar.ag" #-} _tlIidMemRef {-# LINE 181 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _hdOidMemRef = ({-# LINE 16 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRef {-# LINE 187 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (chain) _tlOidMemRef = ({-# LINE 13 "src-ag/Language/EWE/CheckGrammar.ag" #-} _hdIidMemRef {-# LINE 193 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _hdIidMemRef,_hdIres) = hd_ _hdOidMemRef ( _tlIidMemRef) = tl_ _tlOidMemRef in ( _lhsOidMemRef))) sem_Equates_Nil :: T_Equates sem_Equates_Nil = (\ _lhsIidMemRef -> (let _lhsOidMemRef :: (Map.Map String Int) -- copy rule (chain) _lhsOidMemRef = ({-# LINE 13 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRef {-# LINE 208 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOidMemRef))) -- Instr ------------------------------------------------------- {- visit 0: inherited attributes: idMemRefDef : Map.Map String Int labelFound : Set.Set String synthesized attribute: res : Either String () alternatives: alternative IMMI: child dest : MRef child int : {Int} alternative IMMS: child dest : MRef child string : {String} alternative IMRPC: child dest : MRef child int : {Int} alternative SPC: child oper : MRef alternative IMMM: child dest : MRef child oper : MRef alternative IAdd: child dest : MRef child left : MRef child right : MRef alternative ISub: child dest : MRef child left : MRef child right : MRef alternative IMul: child dest : MRef child left : MRef child right : MRef alternative IDiv: child dest : MRef child left : MRef child right : MRef alternative IMod: child dest : MRef child left : MRef child right : MRef alternative IMRI: child dest : MRef child oper : MRef child int : {Int} alternative IMMR: child dest : MRef child int : {Int} child oper : MRef alternative IRI: child oper : MRef alternative IWI: child oper : MRef alternative IRS: child left : MRef child right : MRef alternative IWS: child oper : MRef alternative IGI: child int : {Int} alternative IGS: child string : {String} alternative IFI: child bcond : MRef child cond : Cond child then : MRef child int : {Int} alternative IFS: child bcond : MRef child cond : Cond child then : MRef child string : {String} alternative IH: alternative IB: alternative INI: -} -- cata sem_Instr :: Instr -> T_Instr sem_Instr (IMMI _dest _int) = (sem_Instr_IMMI (sem_MRef _dest) _int) sem_Instr (IMMS _dest _string) = (sem_Instr_IMMS (sem_MRef _dest) _string) sem_Instr (IMRPC _dest _int) = (sem_Instr_IMRPC (sem_MRef _dest) _int) sem_Instr (SPC _oper) = (sem_Instr_SPC (sem_MRef _oper)) sem_Instr (IMMM _dest _oper) = (sem_Instr_IMMM (sem_MRef _dest) (sem_MRef _oper)) sem_Instr (IAdd _dest _left _right) = (sem_Instr_IAdd (sem_MRef _dest) (sem_MRef _left) (sem_MRef _right)) sem_Instr (ISub _dest _left _right) = (sem_Instr_ISub (sem_MRef _dest) (sem_MRef _left) (sem_MRef _right)) sem_Instr (IMul _dest _left _right) = (sem_Instr_IMul (sem_MRef _dest) (sem_MRef _left) (sem_MRef _right)) sem_Instr (IDiv _dest _left _right) = (sem_Instr_IDiv (sem_MRef _dest) (sem_MRef _left) (sem_MRef _right)) sem_Instr (IMod _dest _left _right) = (sem_Instr_IMod (sem_MRef _dest) (sem_MRef _left) (sem_MRef _right)) sem_Instr (IMRI _dest _oper _int) = (sem_Instr_IMRI (sem_MRef _dest) (sem_MRef _oper) _int) sem_Instr (IMMR _dest _int _oper) = (sem_Instr_IMMR (sem_MRef _dest) _int (sem_MRef _oper)) sem_Instr (IRI _oper) = (sem_Instr_IRI (sem_MRef _oper)) sem_Instr (IWI _oper) = (sem_Instr_IWI (sem_MRef _oper)) sem_Instr (IRS _left _right) = (sem_Instr_IRS (sem_MRef _left) (sem_MRef _right)) sem_Instr (IWS _oper) = (sem_Instr_IWS (sem_MRef _oper)) sem_Instr (IGI _int) = (sem_Instr_IGI _int) sem_Instr (IGS _string) = (sem_Instr_IGS _string) sem_Instr (IFI _bcond _cond _then _int) = (sem_Instr_IFI (sem_MRef _bcond) (sem_Cond _cond) (sem_MRef _then) _int) sem_Instr (IFS _bcond _cond _then _string) = (sem_Instr_IFS (sem_MRef _bcond) (sem_Cond _cond) (sem_MRef _then) _string) sem_Instr (IH) = (sem_Instr_IH) sem_Instr (IB) = (sem_Instr_IB) sem_Instr (INI) = (sem_Instr_INI) -- semantic domain type T_Instr = (Map.Map String Int) -> (Set.Set String) -> ( (Either String ())) data Inh_Instr = Inh_Instr {idMemRefDef_Inh_Instr :: (Map.Map String Int),labelFound_Inh_Instr :: (Set.Set String)} data Syn_Instr = Syn_Instr {res_Syn_Instr :: (Either String ())} wrap_Instr :: T_Instr -> Inh_Instr -> Syn_Instr wrap_Instr sem (Inh_Instr _lhsIidMemRefDef _lhsIlabelFound) = (let ( _lhsOres) = sem _lhsIidMemRefDef _lhsIlabelFound in (Syn_Instr _lhsOres)) sem_Instr_IMMI :: T_MRef -> Int -> T_Instr sem_Instr_IMMI dest_ int_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _destIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 83, column 11) _lhsOres = ({-# LINE 83 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres {-# LINE 363 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 369 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIres) = dest_ _destOidMemRefDef in ( _lhsOres))) sem_Instr_IMMS :: T_MRef -> String -> T_Instr sem_Instr_IMMS dest_ string_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _destIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 84, column 11) _lhsOres = ({-# LINE 84 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres {-# LINE 387 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 393 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIres) = dest_ _destOidMemRefDef in ( _lhsOres))) sem_Instr_IMRPC :: T_MRef -> Int -> T_Instr sem_Instr_IMRPC dest_ int_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _destIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 85, column 11) _lhsOres = ({-# LINE 85 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres {-# LINE 411 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 417 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIres) = dest_ _destOidMemRefDef in ( _lhsOres))) sem_Instr_SPC :: T_MRef -> T_Instr sem_Instr_SPC oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _operOidMemRefDef :: ( Map.Map String Int ) _operIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 86, column 11) _lhsOres = ({-# LINE 86 "src-ag/Language/EWE/CheckGrammar.ag" #-} _operIres {-# LINE 434 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 440 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _operIres) = oper_ _operOidMemRefDef in ( _lhsOres))) sem_Instr_IMMM :: T_MRef -> T_MRef -> T_Instr sem_Instr_IMMM dest_ oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _operOidMemRefDef :: ( Map.Map String Int ) _destIres :: ( Either String () ) _operIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 87, column 11) _lhsOres = ({-# LINE 87 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _operIres {-# LINE 460 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 466 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 472 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIres) = dest_ _destOidMemRefDef ( _operIres) = oper_ _operOidMemRefDef in ( _lhsOres))) sem_Instr_IAdd :: T_MRef -> T_MRef -> T_MRef -> T_Instr sem_Instr_IAdd dest_ left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _destIres :: ( Either String () ) _leftIres :: ( Either String () ) _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 88, column 11) _lhsOres = ({-# LINE 88 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _leftIres <--> _rightIres {-# LINE 497 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 503 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 509 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 515 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIres) = dest_ _destOidMemRefDef ( _leftIres) = left_ _leftOidMemRefDef ( _rightIres) = right_ _rightOidMemRefDef in ( _lhsOres))) sem_Instr_ISub :: T_MRef -> T_MRef -> T_MRef -> T_Instr sem_Instr_ISub dest_ left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _destIres :: ( Either String () ) _leftIres :: ( Either String () ) _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 89, column 11) _lhsOres = ({-# LINE 89 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _leftIres <--> _rightIres {-# LINE 542 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 548 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 554 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 560 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIres) = dest_ _destOidMemRefDef ( _leftIres) = left_ _leftOidMemRefDef ( _rightIres) = right_ _rightOidMemRefDef in ( _lhsOres))) sem_Instr_IMul :: T_MRef -> T_MRef -> T_MRef -> T_Instr sem_Instr_IMul dest_ left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _destIres :: ( Either String () ) _leftIres :: ( Either String () ) _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 90, column 11) _lhsOres = ({-# LINE 90 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _leftIres <--> _rightIres {-# LINE 587 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 593 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 599 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 605 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIres) = dest_ _destOidMemRefDef ( _leftIres) = left_ _leftOidMemRefDef ( _rightIres) = right_ _rightOidMemRefDef in ( _lhsOres))) sem_Instr_IDiv :: T_MRef -> T_MRef -> T_MRef -> T_Instr sem_Instr_IDiv dest_ left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _destIres :: ( Either String () ) _leftIres :: ( Either String () ) _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 91, column 11) _lhsOres = ({-# LINE 91 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _leftIres <--> _rightIres {-# LINE 632 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 638 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 644 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 650 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIres) = dest_ _destOidMemRefDef ( _leftIres) = left_ _leftOidMemRefDef ( _rightIres) = right_ _rightOidMemRefDef in ( _lhsOres))) sem_Instr_IMod :: T_MRef -> T_MRef -> T_MRef -> T_Instr sem_Instr_IMod dest_ left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _destIres :: ( Either String () ) _leftIres :: ( Either String () ) _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 92, column 11) _lhsOres = ({-# LINE 92 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _leftIres <--> _rightIres {-# LINE 677 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 683 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 689 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 695 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIres) = dest_ _destOidMemRefDef ( _leftIres) = left_ _leftOidMemRefDef ( _rightIres) = right_ _rightOidMemRefDef in ( _lhsOres))) sem_Instr_IMRI :: T_MRef -> T_MRef -> Int -> T_Instr sem_Instr_IMRI dest_ oper_ int_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _operOidMemRefDef :: ( Map.Map String Int ) _destIres :: ( Either String () ) _operIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 93, column 11) _lhsOres = ({-# LINE 93 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _operIres {-# LINE 720 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 726 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 732 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIres) = dest_ _destOidMemRefDef ( _operIres) = oper_ _operOidMemRefDef in ( _lhsOres))) sem_Instr_IMMR :: T_MRef -> Int -> T_MRef -> T_Instr sem_Instr_IMMR dest_ int_ oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _operOidMemRefDef :: ( Map.Map String Int ) _destIres :: ( Either String () ) _operIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 94, column 11) _lhsOres = ({-# LINE 94 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _operIres {-# LINE 755 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 761 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 767 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIres) = dest_ _destOidMemRefDef ( _operIres) = oper_ _operOidMemRefDef in ( _lhsOres))) sem_Instr_IRI :: T_MRef -> T_Instr sem_Instr_IRI oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _operOidMemRefDef :: ( Map.Map String Int ) _operIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 95, column 11) _lhsOres = ({-# LINE 95 "src-ag/Language/EWE/CheckGrammar.ag" #-} _operIres {-# LINE 786 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 792 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _operIres) = oper_ _operOidMemRefDef in ( _lhsOres))) sem_Instr_IWI :: T_MRef -> T_Instr sem_Instr_IWI oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _operOidMemRefDef :: ( Map.Map String Int ) _operIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 96, column 11) _lhsOres = ({-# LINE 96 "src-ag/Language/EWE/CheckGrammar.ag" #-} _operIres {-# LINE 809 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 815 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _operIres) = oper_ _operOidMemRefDef in ( _lhsOres))) sem_Instr_IRS :: T_MRef -> T_MRef -> T_Instr sem_Instr_IRS left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _leftIres :: ( Either String () ) _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 97, column 11) _lhsOres = ({-# LINE 97 "src-ag/Language/EWE/CheckGrammar.ag" #-} _leftIres <--> _rightIres {-# LINE 835 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 841 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 847 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _leftIres) = left_ _leftOidMemRefDef ( _rightIres) = right_ _rightOidMemRefDef in ( _lhsOres))) sem_Instr_IWS :: T_MRef -> T_Instr sem_Instr_IWS oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _operOidMemRefDef :: ( Map.Map String Int ) _operIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 98, column 11) _lhsOres = ({-# LINE 98 "src-ag/Language/EWE/CheckGrammar.ag" #-} _operIres {-# LINE 866 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 872 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _operIres) = oper_ _operOidMemRefDef in ( _lhsOres))) sem_Instr_IGI :: Int -> T_Instr sem_Instr_IGI int_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 99, column 11) _lhsOres = ({-# LINE 99 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 887 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOres))) sem_Instr_IGS :: String -> T_Instr sem_Instr_IGS string_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 100, column 11) _lhsOres = ({-# LINE 100 "src-ag/Language/EWE/CheckGrammar.ag" #-} isLabelDef string_ _lhsIlabelFound {-# LINE 900 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOres))) sem_Instr_IFI :: T_MRef -> T_Cond -> T_MRef -> Int -> T_Instr sem_Instr_IFI bcond_ cond_ then_ int_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _bcondOidMemRefDef :: ( Map.Map String Int ) _thenOidMemRefDef :: ( Map.Map String Int ) _bcondIres :: ( Either String () ) _thenIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 101, column 11) _lhsOres = ({-# LINE 101 "src-ag/Language/EWE/CheckGrammar.ag" #-} _bcondIres <--> _thenIres {-# LINE 920 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _bcondOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 926 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _thenOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 932 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _bcondIres) = bcond_ _bcondOidMemRefDef ( _thenIres) = then_ _thenOidMemRefDef in ( _lhsOres))) sem_Instr_IFS :: T_MRef -> T_Cond -> T_MRef -> String -> T_Instr sem_Instr_IFS bcond_ cond_ then_ string_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _bcondOidMemRefDef :: ( Map.Map String Int ) _thenOidMemRefDef :: ( Map.Map String Int ) _bcondIres :: ( Either String () ) _thenIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 102, column 11) _lhsOres = ({-# LINE 102 "src-ag/Language/EWE/CheckGrammar.ag" #-} isLabelDef string_ _lhsIlabelFound <--> _bcondIres <--> _thenIres {-# LINE 956 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _bcondOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 962 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _thenOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 968 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _bcondIres) = bcond_ _bcondOidMemRefDef ( _thenIres) = then_ _thenOidMemRefDef in ( _lhsOres))) sem_Instr_IH :: T_Instr sem_Instr_IH = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 103, column 11) _lhsOres = ({-# LINE 103 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 984 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOres))) sem_Instr_IB :: T_Instr sem_Instr_IB = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 104, column 11) _lhsOres = ({-# LINE 104 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 996 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOres))) sem_Instr_INI :: T_Instr sem_Instr_INI = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 105, column 11) _lhsOres = ({-# LINE 105 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 1008 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOres))) -- Labels ------------------------------------------------------ {- visit 0: chained attribute: labelDef : Set.Set String synthesized attributes: copy : Labels res : Either String () alternatives: alternative Cons: child hd : {String} child tl : Labels visit 0: local copy : _ alternative Nil: visit 0: local copy : _ -} -- cata sem_Labels :: Labels -> T_Labels sem_Labels list = (Prelude.foldr sem_Labels_Cons sem_Labels_Nil list) -- semantic domain type T_Labels = ( Set.Set String ) -> ( Labels,( Set.Set String ),( Either String () )) data Inh_Labels = Inh_Labels {labelDef_Inh_Labels :: ( Set.Set String )} data Syn_Labels = Syn_Labels {copy_Syn_Labels :: Labels,labelDef_Syn_Labels :: ( Set.Set String ),res_Syn_Labels :: ( Either String () )} wrap_Labels :: T_Labels -> Inh_Labels -> Syn_Labels wrap_Labels sem (Inh_Labels _lhsIlabelDef) = (let ( _lhsOcopy,_lhsOlabelDef,_lhsOres) = sem _lhsIlabelDef in (Syn_Labels _lhsOcopy _lhsOlabelDef _lhsOres)) sem_Labels_Cons :: String -> T_Labels -> T_Labels sem_Labels_Cons hd_ tl_ = (\ _lhsIlabelDef -> (let _lhsOres :: ( Either String () ) _lhsOlabelDef :: ( Set.Set String ) _lhsOcopy :: Labels _tlOlabelDef :: ( Set.Set String ) _tlIcopy :: Labels _tlIlabelDef :: ( Set.Set String ) _tlIres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 53, column 11) _lhsOres = ({-# LINE 53 "src-ag/Language/EWE/CheckGrammar.ag" #-} isLabelNotDef hd_ _tlIlabelDef {-# LINE 1061 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 53, column 11) _lhsOlabelDef = ({-# LINE 54 "src-ag/Language/EWE/CheckGrammar.ag" #-} Set.insert hd_ _tlIlabelDef {-# LINE 1067 "src/Language/EWE/CheckGrammar.hs" #-} ) -- self rule _copy = ({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-} (:) hd_ _tlIcopy {-# LINE 1073 "src/Language/EWE/CheckGrammar.hs" #-} ) -- self rule _lhsOcopy = ({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-} _copy {-# LINE 1079 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _tlOlabelDef = ({-# LINE 38 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelDef {-# LINE 1085 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _tlIcopy,_tlIlabelDef,_tlIres) = tl_ _tlOlabelDef in ( _lhsOcopy,_lhsOlabelDef,_lhsOres))) sem_Labels_Nil :: T_Labels sem_Labels_Nil = (\ _lhsIlabelDef -> (let _lhsOres :: ( Either String () ) _lhsOlabelDef :: ( Set.Set String ) _lhsOcopy :: Labels -- "src-ag/Language/EWE/CheckGrammar.ag"(line 55, column 11) _lhsOres = ({-# LINE 55 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 1100 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 55, column 11) _lhsOlabelDef = ({-# LINE 56 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelDef {-# LINE 1106 "src/Language/EWE/CheckGrammar.hs" #-} ) -- self rule _copy = ({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-} [] {-# LINE 1112 "src/Language/EWE/CheckGrammar.hs" #-} ) -- self rule _lhsOcopy = ({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-} _copy {-# LINE 1118 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOcopy,_lhsOlabelDef,_lhsOres))) -- MRef -------------------------------------------------------- {- visit 0: inherited attribute: idMemRefDef : Map.Map String Int synthesized attribute: res : Either String () alternatives: alternative MRefI: child int : {Int} alternative MRefId: child string : {String} -} -- cata sem_MRef :: MRef -> T_MRef sem_MRef (MRefI _int) = (sem_MRef_MRefI _int) sem_MRef (MRefId _string) = (sem_MRef_MRefId _string) -- semantic domain type T_MRef = ( Map.Map String Int ) -> ( ( Either String () )) data Inh_MRef = Inh_MRef {idMemRefDef_Inh_MRef :: ( Map.Map String Int )} data Syn_MRef = Syn_MRef {res_Syn_MRef :: ( Either String () )} wrap_MRef :: T_MRef -> Inh_MRef -> Syn_MRef wrap_MRef sem (Inh_MRef _lhsIidMemRefDef) = (let ( _lhsOres) = sem _lhsIidMemRefDef in (Syn_MRef _lhsOres)) sem_MRef_MRefI :: Int -> T_MRef sem_MRef_MRefI int_ = (\ _lhsIidMemRefDef -> (let _lhsOres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 79, column 12) _lhsOres = ({-# LINE 79 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 1161 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOres))) sem_MRef_MRefId :: String -> T_MRef sem_MRef_MRefId string_ = (\ _lhsIidMemRefDef -> (let _lhsOres :: ( Either String () ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 80, column 12) _lhsOres = ({-# LINE 80 "src-ag/Language/EWE/CheckGrammar.ag" #-} isMemRefDef string_ _lhsIidMemRefDef {-# LINE 1173 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOres))) -- Prog -------------------------------------------------------- {- visit 0: synthesized attribute: res : Either String () alternatives: alternative Prg: child stms : Stmts child equates : Equates -} -- cata sem_Prog :: Prog -> T_Prog sem_Prog (Prg _stms _equates) = (sem_Prog_Prg (sem_Stmts _stms) (sem_Equates _equates)) -- semantic domain type T_Prog = ( (Either String ())) data Inh_Prog = Inh_Prog {} data Syn_Prog = Syn_Prog {res_Syn_Prog :: (Either String ())} wrap_Prog :: T_Prog -> Inh_Prog -> Syn_Prog wrap_Prog sem (Inh_Prog) = (let ( _lhsOres) = sem in (Syn_Prog _lhsOres)) sem_Prog_Prg :: T_Stmts -> T_Equates -> T_Prog sem_Prog_Prg stms_ equates_ = (let _stmsOlabelDef :: (Set.Set String) _stmsOlabelFound :: (Set.Set String) _stmsOidMemRefDef :: (Map.Map String Int) _equatesOidMemRef :: (Map.Map String Int) _lhsOres :: (Either String ()) _stmsIlabelDef :: (Set.Set String) _stmsIres :: (Either String ()) _equatesIidMemRef :: (Map.Map String Int) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 59, column 9) _stmsOlabelDef = ({-# LINE 59 "src-ag/Language/EWE/CheckGrammar.ag" #-} Set.empty {-# LINE 1217 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 59, column 9) _stmsOlabelFound = ({-# LINE 60 "src-ag/Language/EWE/CheckGrammar.ag" #-} _stmsIlabelDef {-# LINE 1223 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 59, column 9) _stmsOidMemRefDef = ({-# LINE 61 "src-ag/Language/EWE/CheckGrammar.ag" #-} _equatesIidMemRef {-# LINE 1229 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 62, column 9) _equatesOidMemRef = ({-# LINE 62 "src-ag/Language/EWE/CheckGrammar.ag" #-} Map.empty {-# LINE 1235 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (up) _lhsOres = ({-# LINE 10 "src-ag/Language/EWE/CheckGrammar.ag" #-} _stmsIres {-# LINE 1241 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _stmsIlabelDef,_stmsIres) = stms_ _stmsOidMemRefDef _stmsOlabelDef _stmsOlabelFound ( _equatesIidMemRef) = equates_ _equatesOidMemRef in ( _lhsOres)) -- Stmt -------------------------------------------------------- {- visit 0: inherited attributes: idMemRefDef : Map.Map String Int labelFound : Set.Set String chained attribute: labelDef : Set.Set String synthesized attribute: res : Either String () alternatives: alternative Stmt: child labels : Labels child instr : Instr visit 0: local res1 : _ -} -- cata sem_Stmt :: Stmt -> T_Stmt sem_Stmt (Stmt _labels _instr) = (sem_Stmt_Stmt (sem_Labels _labels) (sem_Instr _instr)) -- semantic domain type T_Stmt = (Map.Map String Int) -> (Set.Set String) -> (Set.Set String) -> ( (Set.Set String),(Either String ())) data Inh_Stmt = Inh_Stmt {idMemRefDef_Inh_Stmt :: (Map.Map String Int),labelDef_Inh_Stmt :: (Set.Set String),labelFound_Inh_Stmt :: (Set.Set String)} data Syn_Stmt = Syn_Stmt {labelDef_Syn_Stmt :: (Set.Set String),res_Syn_Stmt :: (Either String ())} wrap_Stmt :: T_Stmt -> Inh_Stmt -> Syn_Stmt wrap_Stmt sem (Inh_Stmt _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound) = (let ( _lhsOlabelDef,_lhsOres) = sem _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound in (Syn_Stmt _lhsOlabelDef _lhsOres)) sem_Stmt_Stmt :: T_Labels -> T_Instr -> T_Stmt sem_Stmt_Stmt labels_ instr_ = (\ _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _lhsOlabelDef :: (Set.Set String) _labelsOlabelDef :: ( Set.Set String ) _instrOidMemRefDef :: (Map.Map String Int) _instrOlabelFound :: (Set.Set String) _labelsIcopy :: Labels _labelsIlabelDef :: ( Set.Set String ) _labelsIres :: ( Either String () ) _instrIres :: (Either String ()) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 65, column 10) _res1 = ({-# LINE 65 "src-ag/Language/EWE/CheckGrammar.ag" #-} let f (e,er,s) lbl = if Set.member lbl s then (True, lbl ++ " is already defined\n" ++ er, s) else (e, er, Set.insert lbl s) (e', errs', set') = foldl f (False,"",_lhsIlabelDef) _labelsIcopy in if e' then Left errs' else Right () {-# LINE 1311 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 76, column 11) _lhsOres = ({-# LINE 76 "src-ag/Language/EWE/CheckGrammar.ag" #-} _res1 <--> _instrIres {-# LINE 1317 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (up) _lhsOlabelDef = ({-# LINE 26 "src-ag/Language/EWE/CheckGrammar.ag" #-} _labelsIlabelDef {-# LINE 1323 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _labelsOlabelDef = ({-# LINE 38 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelDef {-# LINE 1329 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _instrOidMemRefDef = ({-# LINE 33 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1335 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _instrOlabelFound = ({-# LINE 32 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelFound {-# LINE 1341 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _labelsIcopy,_labelsIlabelDef,_labelsIres) = labels_ _labelsOlabelDef ( _instrIres) = instr_ _instrOidMemRefDef _instrOlabelFound in ( _lhsOlabelDef,_lhsOres))) -- Stmts ------------------------------------------------------- {- visit 0: inherited attributes: idMemRefDef : Map.Map String Int labelFound : Set.Set String chained attribute: labelDef : Set.Set String synthesized attribute: res : Either String () alternatives: alternative Cons: child hd : Stmt child tl : Stmts alternative Nil: -} -- cata sem_Stmts :: Stmts -> T_Stmts sem_Stmts list = (Prelude.foldr sem_Stmts_Cons sem_Stmts_Nil (Prelude.map sem_Stmt list)) -- semantic domain type T_Stmts = (Map.Map String Int) -> (Set.Set String) -> (Set.Set String) -> ( (Set.Set String),(Either String ())) data Inh_Stmts = Inh_Stmts {idMemRefDef_Inh_Stmts :: (Map.Map String Int),labelDef_Inh_Stmts :: (Set.Set String),labelFound_Inh_Stmts :: (Set.Set String)} data Syn_Stmts = Syn_Stmts {labelDef_Syn_Stmts :: (Set.Set String),res_Syn_Stmts :: (Either String ())} wrap_Stmts :: T_Stmts -> Inh_Stmts -> Syn_Stmts wrap_Stmts sem (Inh_Stmts _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound) = (let ( _lhsOlabelDef,_lhsOres) = sem _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound in (Syn_Stmts _lhsOlabelDef _lhsOres)) sem_Stmts_Cons :: T_Stmt -> T_Stmts -> T_Stmts sem_Stmts_Cons hd_ tl_ = (\ _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _lhsOlabelDef :: (Set.Set String) _hdOidMemRefDef :: (Map.Map String Int) _hdOlabelDef :: (Set.Set String) _hdOlabelFound :: (Set.Set String) _tlOidMemRefDef :: (Map.Map String Int) _tlOlabelDef :: (Set.Set String) _tlOlabelFound :: (Set.Set String) _hdIlabelDef :: (Set.Set String) _hdIres :: (Either String ()) _tlIlabelDef :: (Set.Set String) _tlIres :: (Either String ()) -- use rule "src-ag/Language/EWE/CheckGrammar.ag"(line 23, column 12) _lhsOres = ({-# LINE 23 "src-ag/Language/EWE/CheckGrammar.ag" #-} ((<-->) _hdIres _tlIres) {-# LINE 1405 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (up) _lhsOlabelDef = ({-# LINE 20 "src-ag/Language/EWE/CheckGrammar.ag" #-} _tlIlabelDef {-# LINE 1411 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _hdOidMemRefDef = ({-# LINE 28 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1417 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _hdOlabelDef = ({-# LINE 26 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelDef {-# LINE 1423 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _hdOlabelFound = ({-# LINE 27 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelFound {-# LINE 1429 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _tlOidMemRefDef = ({-# LINE 22 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1435 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (chain) _tlOlabelDef = ({-# LINE 20 "src-ag/Language/EWE/CheckGrammar.ag" #-} _hdIlabelDef {-# LINE 1441 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _tlOlabelFound = ({-# LINE 21 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelFound {-# LINE 1447 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _hdIlabelDef,_hdIres) = hd_ _hdOidMemRefDef _hdOlabelDef _hdOlabelFound ( _tlIlabelDef,_tlIres) = tl_ _tlOidMemRefDef _tlOlabelDef _tlOlabelFound in ( _lhsOlabelDef,_lhsOres))) sem_Stmts_Nil :: T_Stmts sem_Stmts_Nil = (\ _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound -> (let _lhsOres :: (Either String ()) _lhsOlabelDef :: (Set.Set String) -- use rule "src-ag/Language/EWE/CheckGrammar.ag"(line 23, column 12) _lhsOres = ({-# LINE 23 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 1465 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (chain) _lhsOlabelDef = ({-# LINE 20 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelDef {-# LINE 1471 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOlabelDef,_lhsOres)))