-- UUAGC 0.9.52.1 (src-ag/Language/EWE/CheckGrammar.ag) module Language.EWE.CheckGrammar where {-# LINE 2 "src-ag/Language/EWE/PPProg.ag" #-} import Text.PrettyPrint {-# LINE 9 "src/Language/EWE/CheckGrammar.hs" #-} {-# 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 17 "src/Language/EWE/CheckGrammar.hs" #-} {-# LINE 124 "src-ag/Language/EWE/PPProg.ag" #-} (<==>) :: String -> Doc -> Doc s <==> doc = text s $$ doc {-# LINE 22 "src/Language/EWE/CheckGrammar.hs" #-} {-# LINE 110 "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 40 "src/Language/EWE/CheckGrammar.hs" #-} -- Cond -------------------------------------------------------- {- visit 0: synthesized attribute: pp : Doc 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 = ( Doc) data Inh_Cond = Inh_Cond {} data Syn_Cond = Syn_Cond {pp_Syn_Cond :: Doc} wrap_Cond :: T_Cond -> Inh_Cond -> Syn_Cond wrap_Cond sem (Inh_Cond) = (let ( _lhsOpp) = sem in (Syn_Cond _lhsOpp)) sem_Cond_CLET :: T_Cond sem_Cond_CLET = (let _lhsOpp :: Doc -- "src-ag/Language/EWE/PPProg.ag"(line 39, column 11) _lhsOpp = ({-# LINE 39 "src-ag/Language/EWE/PPProg.ag" #-} text "<=" {-# LINE 86 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp)) sem_Cond_CLT :: T_Cond sem_Cond_CLT = (let _lhsOpp :: Doc -- "src-ag/Language/EWE/PPProg.ag"(line 40, column 11) _lhsOpp = ({-# LINE 40 "src-ag/Language/EWE/PPProg.ag" #-} char '<' {-# LINE 96 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp)) sem_Cond_CGET :: T_Cond sem_Cond_CGET = (let _lhsOpp :: Doc -- "src-ag/Language/EWE/PPProg.ag"(line 41, column 11) _lhsOpp = ({-# LINE 41 "src-ag/Language/EWE/PPProg.ag" #-} text ">=" {-# LINE 106 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp)) sem_Cond_CGT :: T_Cond sem_Cond_CGT = (let _lhsOpp :: Doc -- "src-ag/Language/EWE/PPProg.ag"(line 42, column 11) _lhsOpp = ({-# LINE 42 "src-ag/Language/EWE/PPProg.ag" #-} char '>' {-# LINE 116 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp)) sem_Cond_CE :: T_Cond sem_Cond_CE = (let _lhsOpp :: Doc -- "src-ag/Language/EWE/PPProg.ag"(line 43, column 11) _lhsOpp = ({-# LINE 43 "src-ag/Language/EWE/PPProg.ag" #-} char '=' {-# LINE 126 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp)) sem_Cond_CNE :: T_Cond sem_Cond_CNE = (let _lhsOpp :: Doc -- "src-ag/Language/EWE/PPProg.ag"(line 44, column 11) _lhsOpp = ({-# LINE 44 "src-ag/Language/EWE/PPProg.ag" #-} text "<>" {-# LINE 136 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp)) -- Equ --------------------------------------------------------- {- visit 0: chained attribute: idMemRef : Map.Map String Int synthesized attributes: pp : Doc 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),Doc,(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),pp_Syn_Equ :: Doc,res_Syn_Equ :: (Either String ())} wrap_Equ :: T_Equ -> Inh_Equ -> Syn_Equ wrap_Equ sem (Inh_Equ _lhsIidMemRef) = (let ( _lhsOidMemRef,_lhsOpp,_lhsOres) = sem _lhsIidMemRef in (Syn_Equ _lhsOidMemRef _lhsOpp _lhsOres)) sem_Equ_Tuple :: String -> Int -> T_Equ sem_Equ_Tuple x1_ x2_ = (\ _lhsIidMemRef -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _lhsOidMemRef :: (Map.Map String Int) -- "src-ag/Language/EWE/PPProg.ag"(line 47, column 11) _lhsOpp = ({-# LINE 47 "src-ag/Language/EWE/PPProg.ag" #-} text "equ" <+> nest 5 (text x1_) <+> nest 10 (text "M" <> brackets (int x2_)) {-# LINE 181 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "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 189 "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 195 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOidMemRef,_lhsOpp,_lhsOres))) -- Equates ----------------------------------------------------- {- visit 0: chained attribute: idMemRef : Map.Map String Int synthesized attribute: pp : Doc 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),Doc) data Inh_Equates = Inh_Equates {idMemRef_Inh_Equates :: (Map.Map String Int)} data Syn_Equates = Syn_Equates {idMemRef_Syn_Equates :: (Map.Map String Int),pp_Syn_Equates :: Doc} wrap_Equates :: T_Equates -> Inh_Equates -> Syn_Equates wrap_Equates sem (Inh_Equates _lhsIidMemRef) = (let ( _lhsOidMemRef,_lhsOpp) = sem _lhsIidMemRef in (Syn_Equates _lhsOidMemRef _lhsOpp)) sem_Equates_Cons :: T_Equ -> T_Equates -> T_Equates sem_Equates_Cons hd_ tl_ = (\ _lhsIidMemRef -> (let _lhsOpp :: Doc _lhsOidMemRef :: (Map.Map String Int) _hdOidMemRef :: (Map.Map String Int) _tlOidMemRef :: (Map.Map String Int) _hdIidMemRef :: (Map.Map String Int) _hdIpp :: Doc _hdIres :: (Either String ()) _tlIidMemRef :: (Map.Map String Int) _tlIpp :: Doc -- use rule "src-ag/Language/EWE/PPProg.ag"(line 16, column 10) _lhsOpp = ({-# LINE 16 "src-ag/Language/EWE/PPProg.ag" #-} _hdIpp $$ _tlIpp {-# LINE 245 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (up) _lhsOidMemRef = ({-# LINE 13 "src-ag/Language/EWE/CheckGrammar.ag" #-} _tlIidMemRef {-# LINE 251 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _hdOidMemRef = ({-# LINE 16 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRef {-# LINE 257 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (chain) _tlOidMemRef = ({-# LINE 13 "src-ag/Language/EWE/CheckGrammar.ag" #-} _hdIidMemRef {-# LINE 263 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _hdIidMemRef,_hdIpp,_hdIres) = hd_ _hdOidMemRef ( _tlIidMemRef,_tlIpp) = tl_ _tlOidMemRef in ( _lhsOidMemRef,_lhsOpp))) sem_Equates_Nil :: T_Equates sem_Equates_Nil = (\ _lhsIidMemRef -> (let _lhsOpp :: Doc _lhsOidMemRef :: (Map.Map String Int) -- use rule "src-ag/Language/EWE/PPProg.ag"(line 16, column 10) _lhsOpp = ({-# LINE 16 "src-ag/Language/EWE/PPProg.ag" #-} empty {-# LINE 279 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (chain) _lhsOidMemRef = ({-# LINE 13 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRef {-# LINE 285 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOidMemRef,_lhsOpp))) -- Instr ------------------------------------------------------- {- visit 0: inherited attributes: idMemRefDef : Map.Map String Int labelFound : Set.Set String synthesized attributes: pp : Doc 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) -> ( Doc,(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 {pp_Syn_Instr :: Doc,res_Syn_Instr :: (Either String ())} wrap_Instr :: T_Instr -> Inh_Instr -> Syn_Instr wrap_Instr sem (Inh_Instr _lhsIidMemRefDef _lhsIlabelFound) = (let ( _lhsOpp,_lhsOres) = sem _lhsIidMemRefDef _lhsIlabelFound in (Syn_Instr _lhsOpp _lhsOres)) sem_Instr_IMMI :: T_MRef -> Int -> T_Instr sem_Instr_IMMI dest_ int_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _destIpp :: Doc _destIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 57, column 11) _lhsOpp = ({-# LINE 57 "src-ag/Language/EWE/PPProg.ag" #-} _destIpp <+> nest 5 (text ":=") <+> nest 5 (int int_) {-# LINE 443 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 83, column 11) _lhsOres = ({-# LINE 83 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres {-# LINE 449 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 455 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIpp,_destIres) = dest_ _destOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IMMS :: T_MRef -> String -> T_Instr sem_Instr_IMMS dest_ string_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _destIpp :: Doc _destIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 58, column 11) _lhsOpp = ({-# LINE 58 "src-ag/Language/EWE/PPProg.ag" #-} _destIpp <+> nest 5 (text ":=") <+> nest 5 (doubleQuotes (text string_)) {-# LINE 476 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 84, column 11) _lhsOres = ({-# LINE 84 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres {-# LINE 482 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 488 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIpp,_destIres) = dest_ _destOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IMRPC :: T_MRef -> Int -> T_Instr sem_Instr_IMRPC dest_ int_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _destIpp :: Doc _destIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 60, column 11) _lhsOpp = ({-# LINE 60 "src-ag/Language/EWE/PPProg.ag" #-} _destIpp <+> nest 5 (text ":=") <+> nest 5 (text "PC") <+> char '+' <+> int int_ {-# LINE 511 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 85, column 11) _lhsOres = ({-# LINE 85 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres {-# LINE 517 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 523 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIpp,_destIres) = dest_ _destOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_SPC :: T_MRef -> T_Instr sem_Instr_SPC oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _operOidMemRefDef :: ( Map.Map String Int ) _operIpp :: Doc _operIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 65, column 11) _lhsOpp = ({-# LINE 65 "src-ag/Language/EWE/PPProg.ag" #-} text "PC" <+> nest 5 (text ":=") <+> nest 5 _operIpp {-# LINE 543 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 86, column 11) _lhsOres = ({-# LINE 86 "src-ag/Language/EWE/CheckGrammar.ag" #-} _operIres {-# LINE 549 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 555 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _operIpp,_operIres) = oper_ _operOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IMMM :: T_MRef -> T_MRef -> T_Instr sem_Instr_IMMM dest_ oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _operOidMemRefDef :: ( Map.Map String Int ) _destIpp :: Doc _destIres :: ( Either String () ) _operIpp :: Doc _operIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 68, column 11) _lhsOpp = ({-# LINE 68 "src-ag/Language/EWE/PPProg.ag" #-} _destIpp <+> nest 5 (text ":=") <+> nest 5 _operIpp {-# LINE 579 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 87, column 11) _lhsOres = ({-# LINE 87 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _operIres {-# LINE 585 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 591 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 597 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIpp,_destIres) = dest_ _destOidMemRefDef ( _operIpp,_operIres) = oper_ _operOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IAdd :: T_MRef -> T_MRef -> T_MRef -> T_Instr sem_Instr_IAdd dest_ left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _destIpp :: Doc _destIres :: ( Either String () ) _leftIpp :: Doc _leftIres :: ( Either String () ) _rightIpp :: Doc _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 71, column 11) _lhsOpp = ({-# LINE 71 "src-ag/Language/EWE/PPProg.ag" #-} _destIpp <+> nest 5 (text ":=") <+> nest 5 _leftIpp <+> char '+' <+> _rightIpp {-# LINE 629 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 88, column 11) _lhsOres = ({-# LINE 88 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _leftIres <--> _rightIres {-# LINE 635 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 641 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 647 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 653 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIpp,_destIres) = dest_ _destOidMemRefDef ( _leftIpp,_leftIres) = left_ _leftOidMemRefDef ( _rightIpp,_rightIres) = right_ _rightOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_ISub :: T_MRef -> T_MRef -> T_MRef -> T_Instr sem_Instr_ISub dest_ left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _destIpp :: Doc _destIres :: ( Either String () ) _leftIpp :: Doc _leftIres :: ( Either String () ) _rightIpp :: Doc _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 76, column 11) _lhsOpp = ({-# LINE 76 "src-ag/Language/EWE/PPProg.ag" #-} _destIpp <+> nest 5 (text ":=") <+> nest 5 _leftIpp <+> char '-' <+> _rightIpp {-# LINE 687 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 89, column 11) _lhsOres = ({-# LINE 89 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _leftIres <--> _rightIres {-# LINE 693 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 699 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 705 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 711 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIpp,_destIres) = dest_ _destOidMemRefDef ( _leftIpp,_leftIres) = left_ _leftOidMemRefDef ( _rightIpp,_rightIres) = right_ _rightOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IMul :: T_MRef -> T_MRef -> T_MRef -> T_Instr sem_Instr_IMul dest_ left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _destIpp :: Doc _destIres :: ( Either String () ) _leftIpp :: Doc _leftIres :: ( Either String () ) _rightIpp :: Doc _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 81, column 11) _lhsOpp = ({-# LINE 81 "src-ag/Language/EWE/PPProg.ag" #-} _destIpp <+> nest 5 (text ":=") <+> nest 5 _leftIpp <+> char '*' <+> _rightIpp {-# LINE 745 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 90, column 11) _lhsOres = ({-# LINE 90 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _leftIres <--> _rightIres {-# LINE 751 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 757 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 763 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 769 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIpp,_destIres) = dest_ _destOidMemRefDef ( _leftIpp,_leftIres) = left_ _leftOidMemRefDef ( _rightIpp,_rightIres) = right_ _rightOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IDiv :: T_MRef -> T_MRef -> T_MRef -> T_Instr sem_Instr_IDiv dest_ left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _destIpp :: Doc _destIres :: ( Either String () ) _leftIpp :: Doc _leftIres :: ( Either String () ) _rightIpp :: Doc _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 86, column 11) _lhsOpp = ({-# LINE 86 "src-ag/Language/EWE/PPProg.ag" #-} _destIpp <+> nest 5 (text ":=") <+> nest 5 _leftIpp <+> char '/' <+> _rightIpp {-# LINE 803 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 91, column 11) _lhsOres = ({-# LINE 91 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _leftIres <--> _rightIres {-# LINE 809 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 815 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 821 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 827 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIpp,_destIres) = dest_ _destOidMemRefDef ( _leftIpp,_leftIres) = left_ _leftOidMemRefDef ( _rightIpp,_rightIres) = right_ _rightOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IMod :: T_MRef -> T_MRef -> T_MRef -> T_Instr sem_Instr_IMod dest_ left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _destIpp :: Doc _destIres :: ( Either String () ) _leftIpp :: Doc _leftIres :: ( Either String () ) _rightIpp :: Doc _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 91, column 11) _lhsOpp = ({-# LINE 91 "src-ag/Language/EWE/PPProg.ag" #-} _destIpp <+> nest 5 (text ":=") <+> nest 5 _leftIpp <+> char '%' <+> _rightIpp {-# LINE 861 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 92, column 11) _lhsOres = ({-# LINE 92 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _leftIres <--> _rightIres {-# LINE 867 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 873 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 879 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 885 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIpp,_destIres) = dest_ _destOidMemRefDef ( _leftIpp,_leftIres) = left_ _leftOidMemRefDef ( _rightIpp,_rightIres) = right_ _rightOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IMRI :: T_MRef -> T_MRef -> Int -> T_Instr sem_Instr_IMRI dest_ oper_ int_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _operOidMemRefDef :: ( Map.Map String Int ) _destIpp :: Doc _destIres :: ( Either String () ) _operIpp :: Doc _operIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 96, column 11) _lhsOpp = ({-# LINE 96 "src-ag/Language/EWE/PPProg.ag" #-} _destIpp <+> nest 5 (text ":=") <+> nest 5 (char 'M') <> brackets (_operIpp <+> char '+' <+> int int_) {-# LINE 917 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 93, column 11) _lhsOres = ({-# LINE 93 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _operIres {-# LINE 923 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 929 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 935 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIpp,_destIres) = dest_ _destOidMemRefDef ( _operIpp,_operIres) = oper_ _operOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IMMR :: T_MRef -> Int -> T_MRef -> T_Instr sem_Instr_IMMR dest_ int_ oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _destOidMemRefDef :: ( Map.Map String Int ) _operOidMemRefDef :: ( Map.Map String Int ) _destIpp :: Doc _destIres :: ( Either String () ) _operIpp :: Doc _operIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 102, column 11) _lhsOpp = ({-# LINE 102 "src-ag/Language/EWE/PPProg.ag" #-} char 'M' <> brackets (_destIpp <+> char '+' <+> int int_) <+> nest 5 (text ":=") <+> nest 5 _operIpp {-# LINE 965 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 94, column 11) _lhsOres = ({-# LINE 94 "src-ag/Language/EWE/CheckGrammar.ag" #-} _destIres <--> _operIres {-# LINE 971 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _destOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 977 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 983 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _destIpp,_destIres) = dest_ _destOidMemRefDef ( _operIpp,_operIres) = oper_ _operOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IRI :: T_MRef -> T_Instr sem_Instr_IRI oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _operOidMemRefDef :: ( Map.Map String Int ) _operIpp :: Doc _operIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 108, column 11) _lhsOpp = ({-# LINE 108 "src-ag/Language/EWE/PPProg.ag" #-} text "readInt" <> parens _operIpp {-# LINE 1004 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 95, column 11) _lhsOres = ({-# LINE 95 "src-ag/Language/EWE/CheckGrammar.ag" #-} _operIres {-# LINE 1010 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1016 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _operIpp,_operIres) = oper_ _operOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IWI :: T_MRef -> T_Instr sem_Instr_IWI oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _operOidMemRefDef :: ( Map.Map String Int ) _operIpp :: Doc _operIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 109, column 11) _lhsOpp = ({-# LINE 109 "src-ag/Language/EWE/PPProg.ag" #-} text "writeInt" <> parens _operIpp {-# LINE 1035 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 96, column 11) _lhsOres = ({-# LINE 96 "src-ag/Language/EWE/CheckGrammar.ag" #-} _operIres {-# LINE 1041 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1047 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _operIpp,_operIres) = oper_ _operOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IRS :: T_MRef -> T_MRef -> T_Instr sem_Instr_IRS left_ right_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _leftOidMemRefDef :: ( Map.Map String Int ) _rightOidMemRefDef :: ( Map.Map String Int ) _leftIpp :: Doc _leftIres :: ( Either String () ) _rightIpp :: Doc _rightIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 110, column 11) _lhsOpp = ({-# LINE 110 "src-ag/Language/EWE/PPProg.ag" #-} text "readStr" <> parens (_leftIpp <> comma <+> _rightIpp) {-# LINE 1071 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 97, column 11) _lhsOres = ({-# LINE 97 "src-ag/Language/EWE/CheckGrammar.ag" #-} _leftIres <--> _rightIres {-# LINE 1077 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _leftOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1083 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _rightOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1089 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _leftIpp,_leftIres) = left_ _leftOidMemRefDef ( _rightIpp,_rightIres) = right_ _rightOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IWS :: T_MRef -> T_Instr sem_Instr_IWS oper_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _operOidMemRefDef :: ( Map.Map String Int ) _operIpp :: Doc _operIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 112, column 11) _lhsOpp = ({-# LINE 112 "src-ag/Language/EWE/PPProg.ag" #-} text "writeStr" <> parens _operIpp {-# LINE 1110 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 98, column 11) _lhsOres = ({-# LINE 98 "src-ag/Language/EWE/CheckGrammar.ag" #-} _operIres {-# LINE 1116 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _operOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1122 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _operIpp,_operIres) = oper_ _operOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IGI :: Int -> T_Instr sem_Instr_IGI int_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) -- "src-ag/Language/EWE/PPProg.ag"(line 113, column 11) _lhsOpp = ({-# LINE 113 "src-ag/Language/EWE/PPProg.ag" #-} text "goto" <+> int int_ {-# LINE 1138 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 99, column 11) _lhsOres = ({-# LINE 99 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 1144 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp,_lhsOres))) sem_Instr_IGS :: String -> T_Instr sem_Instr_IGS string_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) -- "src-ag/Language/EWE/PPProg.ag"(line 114, column 11) _lhsOpp = ({-# LINE 114 "src-ag/Language/EWE/PPProg.ag" #-} text "goto" <+> text string_ {-# LINE 1158 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 100, column 11) _lhsOres = ({-# LINE 100 "src-ag/Language/EWE/CheckGrammar.ag" #-} isLabelDef string_ _lhsIlabelFound {-# LINE 1164 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp,_lhsOres))) sem_Instr_IFI :: T_MRef -> T_Cond -> T_MRef -> Int -> T_Instr sem_Instr_IFI bcond_ cond_ then_ int_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _bcondOidMemRefDef :: ( Map.Map String Int ) _thenOidMemRefDef :: ( Map.Map String Int ) _bcondIpp :: Doc _bcondIres :: ( Either String () ) _condIpp :: Doc _thenIpp :: Doc _thenIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 115, column 11) _lhsOpp = ({-# LINE 115 "src-ag/Language/EWE/PPProg.ag" #-} text "if" <+> _bcondIpp <+> _condIpp <+> _thenIpp <+> text "then" <+> text "goto" <+> int int_ {-# LINE 1189 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 101, column 11) _lhsOres = ({-# LINE 101 "src-ag/Language/EWE/CheckGrammar.ag" #-} _bcondIres <--> _thenIres {-# LINE 1195 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _bcondOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1201 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _thenOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1207 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _bcondIpp,_bcondIres) = bcond_ _bcondOidMemRefDef ( _condIpp) = cond_ ( _thenIpp,_thenIres) = then_ _thenOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IFS :: T_MRef -> T_Cond -> T_MRef -> String -> T_Instr sem_Instr_IFS bcond_ cond_ then_ string_ = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _bcondOidMemRefDef :: ( Map.Map String Int ) _thenOidMemRefDef :: ( Map.Map String Int ) _bcondIpp :: Doc _bcondIres :: ( Either String () ) _condIpp :: Doc _thenIpp :: Doc _thenIres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 117, column 11) _lhsOpp = ({-# LINE 117 "src-ag/Language/EWE/PPProg.ag" #-} text "if" <+> _bcondIpp <+> _condIpp <+> _thenIpp <+> text "then" <+> text "goto" <+> text string_ {-# LINE 1239 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "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 1245 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _bcondOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1251 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _thenOidMemRefDef = ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1257 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _bcondIpp,_bcondIres) = bcond_ _bcondOidMemRefDef ( _condIpp) = cond_ ( _thenIpp,_thenIres) = then_ _thenOidMemRefDef in ( _lhsOpp,_lhsOres))) sem_Instr_IH :: T_Instr sem_Instr_IH = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) -- "src-ag/Language/EWE/PPProg.ag"(line 120, column 11) _lhsOpp = ({-# LINE 120 "src-ag/Language/EWE/PPProg.ag" #-} text "halt" {-# LINE 1276 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 103, column 11) _lhsOres = ({-# LINE 103 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 1282 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp,_lhsOres))) sem_Instr_IB :: T_Instr sem_Instr_IB = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) -- "src-ag/Language/EWE/PPProg.ag"(line 121, column 11) _lhsOpp = ({-# LINE 121 "src-ag/Language/EWE/PPProg.ag" #-} text "break" {-# LINE 1295 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 104, column 11) _lhsOres = ({-# LINE 104 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 1301 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp,_lhsOres))) sem_Instr_INI :: T_Instr sem_Instr_INI = (\ _lhsIidMemRefDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) -- "src-ag/Language/EWE/PPProg.ag"(line 122, column 11) _lhsOpp = ({-# LINE 122 "src-ag/Language/EWE/PPProg.ag" #-} empty {-# LINE 1314 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 105, column 11) _lhsOres = ({-# LINE 105 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 1320 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp,_lhsOres))) -- Labels ------------------------------------------------------ {- visit 0: chained attribute: labelDef : Set.Set String synthesized attributes: copy : Labels pp : Doc 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 ),Doc,( 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 ),pp_Syn_Labels :: Doc,res_Syn_Labels :: ( Either String () )} wrap_Labels :: T_Labels -> Inh_Labels -> Syn_Labels wrap_Labels sem (Inh_Labels _lhsIlabelDef) = (let ( _lhsOcopy,_lhsOlabelDef,_lhsOpp,_lhsOres) = sem _lhsIlabelDef in (Syn_Labels _lhsOcopy _lhsOlabelDef _lhsOpp _lhsOres)) sem_Labels_Cons :: String -> T_Labels -> T_Labels sem_Labels_Cons hd_ tl_ = (\ _lhsIlabelDef -> (let _lhsOres :: ( Either String () ) _lhsOlabelDef :: ( Set.Set String ) _lhsOpp :: Doc _lhsOcopy :: Labels _tlOlabelDef :: ( Set.Set String ) _tlIcopy :: Labels _tlIlabelDef :: ( Set.Set String ) _tlIpp :: Doc _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 1376 "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 1382 "src/Language/EWE/CheckGrammar.hs" #-} ) -- use rule "src-ag/Language/EWE/PPProg.ag"(line 19, column 10) _lhsOpp = ({-# LINE 19 "src-ag/Language/EWE/PPProg.ag" #-} _tlIpp {-# LINE 1388 "src/Language/EWE/CheckGrammar.hs" #-} ) -- self rule _copy = ({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-} (:) hd_ _tlIcopy {-# LINE 1394 "src/Language/EWE/CheckGrammar.hs" #-} ) -- self rule _lhsOcopy = ({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-} _copy {-# LINE 1400 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _tlOlabelDef = ({-# LINE 38 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelDef {-# LINE 1406 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _tlIcopy,_tlIlabelDef,_tlIpp,_tlIres) = tl_ _tlOlabelDef in ( _lhsOcopy,_lhsOlabelDef,_lhsOpp,_lhsOres))) sem_Labels_Nil :: T_Labels sem_Labels_Nil = (\ _lhsIlabelDef -> (let _lhsOres :: ( Either String () ) _lhsOlabelDef :: ( Set.Set String ) _lhsOpp :: Doc _lhsOcopy :: Labels -- "src-ag/Language/EWE/CheckGrammar.ag"(line 55, column 11) _lhsOres = ({-# LINE 55 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 1422 "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 1428 "src/Language/EWE/CheckGrammar.hs" #-} ) -- use rule "src-ag/Language/EWE/PPProg.ag"(line 19, column 10) _lhsOpp = ({-# LINE 19 "src-ag/Language/EWE/PPProg.ag" #-} empty {-# LINE 1434 "src/Language/EWE/CheckGrammar.hs" #-} ) -- self rule _copy = ({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-} [] {-# LINE 1440 "src/Language/EWE/CheckGrammar.hs" #-} ) -- self rule _lhsOcopy = ({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-} _copy {-# LINE 1446 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOcopy,_lhsOlabelDef,_lhsOpp,_lhsOres))) -- MRef -------------------------------------------------------- {- visit 0: inherited attribute: idMemRefDef : Map.Map String Int synthesized attributes: pp : Doc 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 ) -> ( Doc,( Either String () )) data Inh_MRef = Inh_MRef {idMemRefDef_Inh_MRef :: ( Map.Map String Int )} data Syn_MRef = Syn_MRef {pp_Syn_MRef :: Doc,res_Syn_MRef :: ( Either String () )} wrap_MRef :: T_MRef -> Inh_MRef -> Syn_MRef wrap_MRef sem (Inh_MRef _lhsIidMemRefDef) = (let ( _lhsOpp,_lhsOres) = sem _lhsIidMemRefDef in (Syn_MRef _lhsOpp _lhsOres)) sem_MRef_MRefI :: Int -> T_MRef sem_MRef_MRefI int_ = (\ _lhsIidMemRefDef -> (let _lhsOpp :: Doc _lhsOres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 34, column 12) _lhsOpp = ({-# LINE 34 "src-ag/Language/EWE/PPProg.ag" #-} text "M" <> brackets ( int int_ ) {-# LINE 1491 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 79, column 12) _lhsOres = ({-# LINE 79 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 1497 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp,_lhsOres))) sem_MRef_MRefId :: String -> T_MRef sem_MRef_MRefId string_ = (\ _lhsIidMemRefDef -> (let _lhsOpp :: Doc _lhsOres :: ( Either String () ) -- "src-ag/Language/EWE/PPProg.ag"(line 35, column 12) _lhsOpp = ({-# LINE 35 "src-ag/Language/EWE/PPProg.ag" #-} text "M" <> brackets (text string_) {-# LINE 1511 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 80, column 12) _lhsOres = ({-# LINE 80 "src-ag/Language/EWE/CheckGrammar.ag" #-} isMemRefDef string_ _lhsIidMemRefDef {-# LINE 1517 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOpp,_lhsOres))) -- Prog -------------------------------------------------------- {- visit 0: synthesized attributes: pp : Doc 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 = ( Doc,(Either String ())) data Inh_Prog = Inh_Prog {} data Syn_Prog = Syn_Prog {pp_Syn_Prog :: Doc,res_Syn_Prog :: (Either String ())} wrap_Prog :: T_Prog -> Inh_Prog -> Syn_Prog wrap_Prog sem (Inh_Prog) = (let ( _lhsOpp,_lhsOres) = sem in (Syn_Prog _lhsOpp _lhsOres)) sem_Prog_Prg :: T_Stmts -> T_Equates -> T_Prog sem_Prog_Prg stms_ equates_ = (let _lhsOpp :: Doc _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) _stmsIpp :: Doc _stmsIres :: (Either String ()) _equatesIidMemRef :: (Map.Map String Int) _equatesIpp :: Doc -- "src-ag/Language/EWE/PPProg.ag"(line 54, column 9) _lhsOpp = ({-# LINE 54 "src-ag/Language/EWE/PPProg.ag" #-} _stmsIpp $$ _equatesIpp {-# LINE 1565 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "src-ag/Language/EWE/CheckGrammar.ag"(line 59, column 9) _stmsOlabelDef = ({-# LINE 59 "src-ag/Language/EWE/CheckGrammar.ag" #-} Set.empty {-# LINE 1571 "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 1577 "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 1583 "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 1589 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (up) _lhsOres = ({-# LINE 10 "src-ag/Language/EWE/CheckGrammar.ag" #-} _stmsIres {-# LINE 1595 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _stmsIlabelDef,_stmsIpp,_stmsIres) = stms_ _stmsOidMemRefDef _stmsOlabelDef _stmsOlabelFound ( _equatesIidMemRef,_equatesIpp) = equates_ _equatesOidMemRef in ( _lhsOpp,_lhsOres)) -- Stmt -------------------------------------------------------- {- visit 0: inherited attributes: idMemRefDef : Map.Map String Int labelFound : Set.Set String chained attribute: labelDef : Set.Set String synthesized attributes: pp : Doc 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),Doc,(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),pp_Syn_Stmt :: Doc,res_Syn_Stmt :: (Either String ())} wrap_Stmt :: T_Stmt -> Inh_Stmt -> Syn_Stmt wrap_Stmt sem (Inh_Stmt _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound) = (let ( _lhsOlabelDef,_lhsOpp,_lhsOres) = sem _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound in (Syn_Stmt _lhsOlabelDef _lhsOpp _lhsOres)) sem_Stmt_Stmt :: T_Labels -> T_Instr -> T_Stmt sem_Stmt_Stmt labels_ instr_ = (\ _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound -> (let _lhsOpp :: Doc _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 ) _labelsIpp :: Doc _labelsIres :: ( Either String () ) _instrIpp :: Doc _instrIres :: (Either String ()) -- "src-ag/Language/EWE/PPProg.ag"(line 51, column 10) _lhsOpp = ({-# LINE 51 "src-ag/Language/EWE/PPProg.ag" #-} _labelsIpp $$ _instrIpp {-# LINE 1661 "src/Language/EWE/CheckGrammar.hs" #-} ) -- "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 1675 "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 1681 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (up) _lhsOlabelDef = ({-# LINE 26 "src-ag/Language/EWE/CheckGrammar.ag" #-} _labelsIlabelDef {-# LINE 1687 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _labelsOlabelDef = ({-# LINE 38 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelDef {-# LINE 1693 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _instrOidMemRefDef = ({-# LINE 33 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1699 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _instrOlabelFound = ({-# LINE 32 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelFound {-# LINE 1705 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _labelsIcopy,_labelsIlabelDef,_labelsIpp,_labelsIres) = labels_ _labelsOlabelDef ( _instrIpp,_instrIres) = instr_ _instrOidMemRefDef _instrOlabelFound in ( _lhsOlabelDef,_lhsOpp,_lhsOres))) -- Stmts ------------------------------------------------------- {- visit 0: inherited attributes: idMemRefDef : Map.Map String Int labelFound : Set.Set String chained attribute: labelDef : Set.Set String synthesized attributes: pp : Doc 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),Doc,(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),pp_Syn_Stmts :: Doc,res_Syn_Stmts :: (Either String ())} wrap_Stmts :: T_Stmts -> Inh_Stmts -> Syn_Stmts wrap_Stmts sem (Inh_Stmts _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound) = (let ( _lhsOlabelDef,_lhsOpp,_lhsOres) = sem _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound in (Syn_Stmts _lhsOlabelDef _lhsOpp _lhsOres)) sem_Stmts_Cons :: T_Stmt -> T_Stmts -> T_Stmts sem_Stmts_Cons hd_ tl_ = (\ _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound -> (let _lhsOpp :: Doc _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) _hdIpp :: Doc _hdIres :: (Either String ()) _tlIlabelDef :: (Set.Set String) _tlIpp :: Doc _tlIres :: (Either String ()) -- use rule "src-ag/Language/EWE/PPProg.ag"(line 25, column 10) _lhsOpp = ({-# LINE 25 "src-ag/Language/EWE/PPProg.ag" #-} (($$) _hdIpp _tlIpp) {-# LINE 1773 "src/Language/EWE/CheckGrammar.hs" #-} ) -- use rule "src-ag/Language/EWE/CheckGrammar.ag"(line 23, column 12) _lhsOres = ({-# LINE 23 "src-ag/Language/EWE/CheckGrammar.ag" #-} ((<-->) _hdIres _tlIres) {-# LINE 1779 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (up) _lhsOlabelDef = ({-# LINE 20 "src-ag/Language/EWE/CheckGrammar.ag" #-} _tlIlabelDef {-# LINE 1785 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _hdOidMemRefDef = ({-# LINE 28 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1791 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _hdOlabelDef = ({-# LINE 26 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelDef {-# LINE 1797 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _hdOlabelFound = ({-# LINE 27 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelFound {-# LINE 1803 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _tlOidMemRefDef = ({-# LINE 22 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIidMemRefDef {-# LINE 1809 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (chain) _tlOlabelDef = ({-# LINE 20 "src-ag/Language/EWE/CheckGrammar.ag" #-} _hdIlabelDef {-# LINE 1815 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (down) _tlOlabelFound = ({-# LINE 21 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelFound {-# LINE 1821 "src/Language/EWE/CheckGrammar.hs" #-} ) ( _hdIlabelDef,_hdIpp,_hdIres) = hd_ _hdOidMemRefDef _hdOlabelDef _hdOlabelFound ( _tlIlabelDef,_tlIpp,_tlIres) = tl_ _tlOidMemRefDef _tlOlabelDef _tlOlabelFound in ( _lhsOlabelDef,_lhsOpp,_lhsOres))) sem_Stmts_Nil :: T_Stmts sem_Stmts_Nil = (\ _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound -> (let _lhsOpp :: Doc _lhsOres :: (Either String ()) _lhsOlabelDef :: (Set.Set String) -- use rule "src-ag/Language/EWE/PPProg.ag"(line 25, column 10) _lhsOpp = ({-# LINE 25 "src-ag/Language/EWE/PPProg.ag" #-} empty {-# LINE 1840 "src/Language/EWE/CheckGrammar.hs" #-} ) -- use rule "src-ag/Language/EWE/CheckGrammar.ag"(line 23, column 12) _lhsOres = ({-# LINE 23 "src-ag/Language/EWE/CheckGrammar.ag" #-} Right () {-# LINE 1846 "src/Language/EWE/CheckGrammar.hs" #-} ) -- copy rule (chain) _lhsOlabelDef = ({-# LINE 20 "src-ag/Language/EWE/CheckGrammar.ag" #-} _lhsIlabelDef {-# LINE 1852 "src/Language/EWE/CheckGrammar.hs" #-} ) in ( _lhsOlabelDef,_lhsOpp,_lhsOres)))