packages feed

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 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)))