ewe 0.1.0.30 → 0.1.0.31
raw patch · 7 files changed
+1674/−297 lines, 7 files
Files
- dist/build/ewe/ewe-tmp/Language/EWE/Parser.hs +1/−29
- dist/build/ewe/ewe-tmp/Language/EWE/Scanner.hs +2/−69
- ewe.cabal +18/−18
- src/Language/EWE/AbsSyn.ag +0/−57
- src/Language/EWE/AbsSyn.hs +181/−0
- src/Language/EWE/CheckGrammar.ag +0/−124
- src/Language/EWE/CheckGrammar.hs +1472/−0
dist/build/ewe/ewe-tmp/Language/EWE/Parser.hs view
@@ -584,35 +584,7 @@ pEWE s = runAlex s parse {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<línea-de-orden>" #-}-{-# LINE 8 "<línea-de-orden>" #-}-# 1 "/usr/include/stdc-predef.h" 1 3 4--# 17 "/usr/include/stdc-predef.h" 3 4------------------------# 8 "<línea-de-orden>" 2+{-# LINE 1 "<command-line>" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} -- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp
dist/build/ewe/ewe-tmp/Language/EWE/Scanner.hs view
@@ -32,40 +32,7 @@ #endif {-# LINE 1 "templates/wrappers.hs" #-} {-# LINE 1 "templates/wrappers.hs" #-}-{-# LINE 1 "<línea-de-orden>" #-}-------# 1 "/usr/include/stdc-predef.h" 1 3 4--# 17 "/usr/include/stdc-predef.h" 3 4------------------------# 6 "<línea-de-orden>" 2+{-# LINE 1 "<command-line>" #-} {-# LINE 1 "templates/wrappers.hs" #-} -- ----------------------------------------------------------------------------- -- Alex wrapper code.@@ -402,41 +369,7 @@ alex_action_26 = returnId {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<línea-de-orden>" #-}--------# 1 "/usr/include/stdc-predef.h" 1 3 4--# 17 "/usr/include/stdc-predef.h" 3 4------------------------# 7 "<línea-de-orden>" 2+{-# LINE 1 "<command-line>" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} -- ----------------------------------------------------------------------------- -- ALEX TEMPLATE
ewe.cabal view
@@ -2,7 +2,7 @@ -- see http://haskell.org/cabal/users-guide/ name: ewe-version: 0.1.0.30+version: 0.1.0.31 synopsis: An language using in Programming Languages teaching description: Another implemention of the EWE programming language originally created and developed by Kent D. Lee. EWE is an extension of the RAM programming language. RAM was created by Sethi. homepage: http://github.com/jfcmacro/ewe@@ -16,23 +16,23 @@ cabal-version: >=1.8 executable ewe- main-is: Main.hs- Build-depends: base >=4.5 && < 5,- transformers >=0.3,- mtl >= 2.1,- containers >= 0.4.2,- array >= 0.4.0.0- hs-source-dirs: src- build-tools: alex, happy- other-modules: Language.EWE.AbsSyn,- Language.EWE.Utils,- Language.EWE.VM,- Language.EWE.Token,- Language.EWE.Scanner,- Language.EWE.CheckGrammar,- Language.EWE.Parser- x-agmodule: file: "src/Language/EWE/AbsSyn.ag" options : data, pretty, haskellsyntax, module "Language.EWE.AbsSyn"- x-agmodule: file: "src/Language/EWE/CheckGrammar.ag" options : semfuns, pretty, haskellsyntax, catas, wrappers, signatures, module "Language.EWE.CheckGrammar"+ main-is: Main.hs+ Build-depends: base >=4.5 && < 5,+ transformers >=0.3,+ mtl >= 2.1,+ containers >= 0.4.2,+ array >= 0.4.0.0+ hs-source-dirs: src, src-ag+ build-tools: alex, happy+ other-modules: Language.EWE.AbsSyn,+ Language.EWE.Utils,+ Language.EWE.VM,+ Language.EWE.Token,+ Language.EWE.Scanner,+ Language.EWE.CheckGrammar,+ Language.EWE.Parser+ x-agmodule: file: "src-ag/Language/EWE/AbsSyn.ag" options : data, pretty, haskellsyntax, module "Language.EWE.AbsSyn", output "src/Language/EWE/AbsSyn.hs"+ x-agmodule: file: "src-ag/Language/EWE/CheckGrammar.ag" options : semfuns, pretty, haskellsyntax, catas, wrappers, signatures, module "Language.EWE.CheckGrammar", output "src/Language/EWE/CheckGrammar.hs" source-repository head type: git
− src/Language/EWE/AbsSyn.ag
@@ -1,57 +0,0 @@--data MRef | MRefI Int- | MRefId String--deriving MRef : Eq, Show--data Cond | CLET- | CLT- | CGET- | CGT- | CE- | CNE--deriving Cond: Eq, Show--type Equ = (String,Int)--type Equates = [Equ]--type Labels = [String]--data Stmt | Stmt labels :: Labels instr :: Instr--deriving Stmt: Eq, Show--type Stmts = [Stmt]--data Prog | Prg stms :: Stmts- equates :: Equates--deriving Prog : Eq, Show--data Instr | IMMI dest :: MRef Int -- Move a int into memory- | IMMS dest :: MRef String -- Move a string into memory- | IMRPC dest :: MRef Int -- Move a relative PC into memory- | SPC oper :: MRef -- Set PC from memory- | IMMM dest,oper :: MRef -- Move Memory to Memory- | IAdd dest,left,right :: MRef -- Add two Memory References- | ISub dest,left,right :: MRef -- Sub two Memory References- | IMul dest,left,right :: MRef -- Mul two Memory References- | IDiv dest,left,right :: MRef -- Div two Memory References- | IMod dest,left,right :: MRef -- Mod two Memory References- | IMRI dest,oper :: MRef Int -- Move to Memory Ref- | IMMR dest :: MRef Int oper :: MRef -- Move to Memory Ref- | IRI oper :: MRef -- Read an Int into a Mem Ref- | IWI oper :: MRef -- Write an Int from a Mem Ref- | IRS left, right :: MRef -- Read a Str- | IWS oper :: MRef -- Write a Str- | IGI Int -- Goto to line- | IGS String -- Goto sym- | IFI bcond :: MRef Cond then :: MRef Int -- If Cond then Int- | IFS bcond :: MRef Cond then :: MRef String --- | IH -- Halt- | IB -- Break- | INI--deriving Instr : Eq, Show
+ src/Language/EWE/AbsSyn.hs view
@@ -0,0 +1,181 @@+++-- UUAGC 0.9.50 (src-ag/Language/EWE/AbsSyn.ag)+module Language.EWE.AbsSyn where+-- Cond --------------------------------------------------------+{-+ alternatives:+ alternative CLET:+ alternative CLT:+ alternative CGET:+ alternative CGT:+ alternative CE:+ alternative CNE:+-}+data Cond = CLET+ | CLT+ | CGET+ | CGT+ | CE+ | CNE+ deriving ( Eq,Show)+-- Equ ---------------------------------------------------------+{-+ alternatives:+ alternative Tuple:+ child x1 : {String}+ child x2 : {Int}+-}+type Equ = ( (String),(Int))+-- Equates -----------------------------------------------------+{-+ alternatives:+ alternative Cons:+ child hd : Equ + child tl : Equates + alternative Nil:+-}+type Equates = [Equ]+-- Instr -------------------------------------------------------+{-+ 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:+-}+data Instr = IMMI (MRef) (Int)+ | IMMS (MRef) (String)+ | IMRPC (MRef) (Int)+ | SPC (MRef)+ | IMMM (MRef) (MRef)+ | IAdd (MRef) (MRef) (MRef)+ | ISub (MRef) (MRef) (MRef)+ | IMul (MRef) (MRef) (MRef)+ | IDiv (MRef) (MRef) (MRef)+ | IMod (MRef) (MRef) (MRef)+ | IMRI (MRef) (MRef) (Int)+ | IMMR (MRef) (Int) (MRef)+ | IRI (MRef)+ | IWI (MRef)+ | IRS (MRef) (MRef)+ | IWS (MRef)+ | IGI (Int)+ | IGS (String)+ | IFI (MRef) (Cond) (MRef) (Int)+ | IFS (MRef) (Cond) (MRef) (String)+ | IH+ | IB+ | INI+ deriving ( Eq,Show)+-- Labels ------------------------------------------------------+{-+ alternatives:+ alternative Cons:+ child hd : {String}+ child tl : Labels + alternative Nil:+-}+type Labels = [(String)]+-- MRef --------------------------------------------------------+{-+ alternatives:+ alternative MRefI:+ child int : {Int}+ alternative MRefId:+ child string : {String}+-}+data MRef = MRefI (Int)+ | MRefId (String)+ deriving ( Eq,Show)+-- Prog --------------------------------------------------------+{-+ alternatives:+ alternative Prg:+ child stms : Stmts + child equates : Equates +-}+data Prog = Prg (Stmts) (Equates)+ deriving ( Eq,Show)+-- Stmt --------------------------------------------------------+{-+ alternatives:+ alternative Stmt:+ child labels : Labels + child instr : Instr +-}+data Stmt = Stmt (Labels) (Instr)+ deriving ( Eq,Show)+-- Stmts -------------------------------------------------------+{-+ alternatives:+ alternative Cons:+ child hd : Stmt + child tl : Stmts + alternative Nil:+-}+type Stmts = [Stmt]
− src/Language/EWE/CheckGrammar.ag
@@ -1,124 +0,0 @@-imports-{-import qualified Data.Set as Set-import qualified Data.Map as Map-import Language.EWE.AbsSyn-import Language.EWE.Utils-}--attr Prog- syn res :: {Either String ()}--attr Equates- chn idMemRef :: {Map.Map String Int}--attr Equ- chn idMemRef :: {Map.Map String Int}- syn res :: {Either String ()}--attr Stmts- chn labelDef :: {Set.Set String}- inh labelFound :: {Set.Set String}- inh idMemRefDef :: {Map.Map String Int}- syn res use {(<-->)} {Right ()} :: {Either String ()}--attr Stmt- chn labelDef :: {Set.Set String}- inh labelFound :: {Set.Set String}- inh idMemRefDef :: {Map.Map String Int}- syn res :: {Either String ()}--attr Instr- inh labelFound :: {Set.Set String}- inh idMemRefDef :: {Map.Map String Int}- syn res :: {Either String ()}--attr Labels- syn res :: { Either String () }- chn labelDef :: { Set.Set String }- syn copy :: self--attr MRef- inh idMemRefDef :: { Map.Map String Int }- syn res :: { Either String () }--sem Equ- | Tuple lhs.res = { if @x1 `Map.member` @lhs.idMemRef- then Left $ @x1 ++ " was already defined "- else Right ()- }- .idMemRef = { Map.insert @x1 @x2 @lhs.idMemRef }--sem Labels- | Cons lhs.res = { isLabelNotDef @hd @tl.labelDef }- .labelDef = { Set.insert @hd @tl.labelDef }- | Nil lhs.res = { Right () }- .labelDef = { @lhs.labelDef }--sem Prog- | Prg stms.labelDef = { Set.empty }- .labelFound = { @stms.labelDef }- .idMemRefDef = { @equates.idMemRef }- equates.idMemRef = { Map.empty }--sem Stmt- | Stmt loc.res1 = {- 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,"",@lhs.labelDef) @labels.copy- in if e'- then Left errs'- else Right ()- }- lhs.res = { @res1 <--> @instr.res }--sem MRef- | MRefI lhs.res = Right ()- | MRefId lhs.res = isMemRefDef @string @lhs.idMemRefDef--sem Instr- | IMMI lhs.res = { @dest.res }- | IMMS lhs.res = { @dest.res }- | IMRPC lhs.res = { @dest.res }- | SPC lhs.res = { @oper.res }- | IMMM lhs.res = { @dest.res <--> @oper.res }- | IAdd lhs.res = { @dest.res <--> @left.res <--> @right.res }- | ISub lhs.res = { @dest.res <--> @left.res <--> @right.res }- | IMul lhs.res = { @dest.res <--> @left.res <--> @right.res }- | IDiv lhs.res = { @dest.res <--> @left.res <--> @right.res }- | IMod lhs.res = { @dest.res <--> @left.res <--> @right.res }- | IMRI lhs.res = { @dest.res <--> @oper.res }- | IMMR lhs.res = { @dest.res <--> @oper.res }- | IRI lhs.res = { @oper.res }- | IWI lhs.res = { @oper.res }- | IRS lhs.res = { @left.res <--> @right.res }- | IWS lhs.res = { @oper.res }- | IGI lhs.res = { Right () }- | IGS lhs.res = { isLabelDef @string @lhs.labelFound }- | IFI lhs.res = { @bcond.res <--> @then.res }- | IFS lhs.res = { isLabelDef @string @lhs.labelFound <--> @bcond.res <--> @then.res}- | IH lhs.res = { Right () }- | IB lhs.res = { Right () }- | INI lhs.res = { Right () }--include "AbsSyn.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"-}
+ src/Language/EWE/CheckGrammar.hs view
@@ -0,0 +1,1472 @@+++-- UUAGC 0.9.50 (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)))