diff --git a/dist/build/ewe/ewe-tmp/Language/EWE/Parser.hs b/dist/build/ewe/ewe-tmp/Language/EWE/Parser.hs
--- a/dist/build/ewe/ewe-tmp/Language/EWE/Parser.hs
+++ b/dist/build/ewe/ewe-tmp/Language/EWE/Parser.hs
@@ -9,7 +9,7 @@
 import qualified Data.Array as Happy_Data_Array
 import qualified GHC.Exts as Happy_GHC_Exts
 
--- parser produced by Happy Version 1.19.0
+-- parser produced by Happy Version 1.18.10
 
 newtype HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 = HappyAbsSyn HappyAny
 #if __GLASGOW_HASKELL__ >= 607
@@ -584,54 +584,11 @@
 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 
 
-{-# LINE 13 "templates/GenericTemplate.hs" #-}
-
-
-
-
-
-#if __GLASGOW_HASKELL__ > 706
-#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Bool)
-#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Bool)
-#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Bool)
-#else
-#define LT(n,m) (n Happy_GHC_Exts.<# m)
-#define GTE(n,m) (n Happy_GHC_Exts.>=# m)
-#define EQ(n,m) (n Happy_GHC_Exts.==# m)
-#endif
-{-# LINE 45 "templates/GenericTemplate.hs" #-}
+{-# LINE 30 "templates/GenericTemplate.hs" #-}
 
 
 data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList
@@ -640,11 +597,11 @@
 
 
 
-{-# LINE 66 "templates/GenericTemplate.hs" #-}
+{-# LINE 51 "templates/GenericTemplate.hs" #-}
 
-{-# LINE 76 "templates/GenericTemplate.hs" #-}
+{-# LINE 61 "templates/GenericTemplate.hs" #-}
 
-{-# LINE 85 "templates/GenericTemplate.hs" #-}
+{-# LINE 70 "templates/GenericTemplate.hs" #-}
 
 infixr 9 `HappyStk`
 data HappyStk a = HappyStk a (HappyStk a)
@@ -679,7 +636,7 @@
 				     happyFail i tk st
 		-1# 	  -> {- nothing -}
 				     happyAccept i tk st
-		n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
+		n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
 
 				     (happyReduceArr Happy_Data_Array.! rule) i tk st
 				     where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
@@ -687,17 +644,19 @@
 
 
 				     happyShift new_state i tk st
-                                     where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
-   where off    = indexShortOffAddr happyActOffsets st
-         off_i  = (off Happy_GHC_Exts.+# i)
-	 check  = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))
-                  then EQ(indexShortOffAddr happyCheck off_i, i)
-		  else False
-         action
+				     where (new_state) = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
+   where (off)    = indexShortOffAddr happyActOffsets st
+         (off_i)  = (off Happy_GHC_Exts.+# i)
+	 check  = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#))
+			then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==#  i)
+			else False
+         (action)
           | check     = indexShortOffAddr happyTable off_i
           | otherwise = indexShortOffAddr happyDefActions st
 
+{-# LINE 130 "templates/GenericTemplate.hs" #-}
 
+
 indexShortOffAddr (HappyA# arr) off =
 	Happy_GHC_Exts.narrow16Int# i
   where
@@ -718,13 +677,13 @@
 -----------------------------------------------------------------------------
 -- HappyState data type (not arrays)
 
-{-# LINE 169 "templates/GenericTemplate.hs" #-}
+{-# LINE 163 "templates/GenericTemplate.hs" #-}
 
 -----------------------------------------------------------------------------
 -- Shifting a token
 
 happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
-     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
+     let (i) = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
 --     trace "shifting the error token" $
      happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)
 
@@ -767,26 +726,23 @@
 happyMonadReduce k nt fn 0# tk st sts stk
      = happyFail 0# tk st sts stk
 happyMonadReduce k nt fn j tk st sts stk =
-      case happyDrop k (HappyCons (st) (sts)) of
-        sts1@((HappyCons (st1@(action)) (_))) ->
-          let drop_stk = happyDropStk k stk in
-          happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
+        happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
+       where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))
+             drop_stk = happyDropStk k stk
 
 happyMonad2Reduce k nt fn 0# tk st sts stk
      = happyFail 0# tk st sts stk
 happyMonad2Reduce k nt fn j tk st sts stk =
-      case happyDrop k (HappyCons (st) (sts)) of
-        sts1@((HappyCons (st1@(action)) (_))) ->
-         let drop_stk = happyDropStk k stk
+       happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
+       where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))
+             drop_stk = happyDropStk k stk
 
-             off = indexShortOffAddr happyGotoOffsets st1
-             off_i = (off Happy_GHC_Exts.+# nt)
-             new_state = indexShortOffAddr happyTable off_i
+             (off) = indexShortOffAddr happyGotoOffsets st1
+             (off_i) = (off Happy_GHC_Exts.+# nt)
+             (new_state) = indexShortOffAddr happyTable off_i
 
 
 
-          in
-          happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
 
 happyDrop 0# l = l
 happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t
@@ -801,9 +757,9 @@
 happyGoto nt j tk st = 
    {- nothing -}
    happyDoAction j tk new_state
-   where off = indexShortOffAddr happyGotoOffsets st
-         off_i = (off Happy_GHC_Exts.+# nt)
-         new_state = indexShortOffAddr happyTable off_i
+   where (off) = indexShortOffAddr happyGotoOffsets st
+         (off_i) = (off Happy_GHC_Exts.+# nt)
+         (new_state) = indexShortOffAddr happyTable off_i
 
 
 
@@ -813,7 +769,7 @@
 
 -- parse error if we are in recovery and we fail again
 happyFail 0# tk old_st _ stk@(x `HappyStk` _) =
-     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
+     let (i) = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
 --	trace "failing" $ 
         happyError_ i tk
 
diff --git a/dist/build/ewe/ewe-tmp/Language/EWE/Scanner.hs b/dist/build/ewe/ewe-tmp/Language/EWE/Scanner.hs
--- a/dist/build/ewe/ewe-tmp/Language/EWE/Scanner.hs
+++ b/dist/build/ewe/ewe-tmp/Language/EWE/Scanner.hs
@@ -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.
@@ -211,20 +178,12 @@
 alexSetStartCode :: Int -> Alex ()
 alexSetStartCode sc = Alex $ \s -> Right (s{alex_scd=sc}, ())
 
-
-
-
-
-
-
-
-
 alexMonadScan = do
   inp <- alexGetInput
   sc <- alexGetStartCode
   case alexScan inp sc of
     AlexEOF -> alexEOF
-    AlexError ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)
+    AlexError inp' -> alexError "lexical error"
     AlexSkip  inp' len -> do
         alexSetInput inp'
         alexMonadScan
@@ -257,21 +216,21 @@
 -- -----------------------------------------------------------------------------
 -- Monad (with ByteString input)
 
-{-# LINE 328 "templates/wrappers.hs" #-}
+{-# LINE 320 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Basic wrapper
 
-{-# LINE 355 "templates/wrappers.hs" #-}
+{-# LINE 347 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Basic wrapper, ByteString version
 
-{-# LINE 373 "templates/wrappers.hs" #-}
+{-# LINE 365 "templates/wrappers.hs" #-}
 
-{-# LINE 386 "templates/wrappers.hs" #-}
+{-# LINE 378 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -279,13 +238,13 @@
 
 -- Adds text positions to the basic model.
 
-{-# LINE 403 "templates/wrappers.hs" #-}
+{-# LINE 395 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Posn wrapper, ByteString version
 
-{-# LINE 418 "templates/wrappers.hs" #-}
+{-# LINE 410 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -402,41 +361,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
@@ -447,20 +372,9 @@
 -- -----------------------------------------------------------------------------
 -- INTERNALS and main scanner engine
 
-{-# LINE 21 "templates/GenericTemplate.hs" #-}
-
-
-
-
+{-# LINE 35 "templates/GenericTemplate.hs" #-}
 
-#if __GLASGOW_HASKELL__ > 706
-#define GTE(n,m) (tagToEnum# (n >=# m))
-#define EQ(n,m) (tagToEnum# (n ==# m))
-#else
-#define GTE(n,m) (n >=# m)
-#define EQ(n,m) (n ==# m)
-#endif
-{-# LINE 50 "templates/GenericTemplate.hs" #-}
+{-# LINE 45 "templates/GenericTemplate.hs" #-}
 
 
 data AlexAddr = AlexA# Addr#
@@ -579,7 +493,7 @@
                 offset = (base +# ord_c)
                 check  = alexIndexInt16OffAddr alex_check offset
 		
-                new_s = if GTE(offset,0#) && EQ(check,ord_c)
+                new_s = if (offset >=# 0#) && (check ==# ord_c)
 			  then alexIndexInt16OffAddr alex_table offset
 			  else alexIndexInt16OffAddr alex_deflt s
 	in
@@ -595,7 +509,7 @@
 	check_accs (AlexAccNone) = last_acc
 	check_accs (AlexAcc a  ) = AlexLastAcc a input (I# (len))
 	check_accs (AlexAccSkip) = AlexLastSkip  input (I# (len))
-{-# LINE 196 "templates/GenericTemplate.hs" #-}
+{-# LINE 191 "templates/GenericTemplate.hs" #-}
 
 data AlexLastAcc a
   = AlexNone
@@ -611,7 +525,7 @@
   = AlexAccNone
   | AlexAcc a
   | AlexAccSkip
-{-# LINE 240 "templates/GenericTemplate.hs" #-}
+{-# LINE 235 "templates/GenericTemplate.hs" #-}
 
 -- used by wrappers
 iUnbox (I# (i)) = i
diff --git a/ewe.cabal b/ewe.cabal
--- a/ewe.cabal
+++ b/ewe.cabal
@@ -2,7 +2,7 @@
 -- see http://haskell.org/cabal/users-guide/
 
 name:                ewe
-version:             0.1.0.32
+version:             0.1.0.38
 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
@@ -14,6 +14,7 @@
 category:            Language
 build-type:          Simple
 cabal-version:       >=1.8
+extra-source-files:  src-ag/Language/EWE/CheckGrammar.ag src-ag/Language/EWE/AbsSyn.ag
 
 executable ewe
   main-is:          Main.hs
@@ -31,7 +32,7 @@
                     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/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
diff --git a/src-ag/Language/EWE/AbsSyn.ag b/src-ag/Language/EWE/AbsSyn.ag
new file mode 100644
--- /dev/null
+++ b/src-ag/Language/EWE/AbsSyn.ag
@@ -0,0 +1,57 @@
+
+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
diff --git a/src-ag/Language/EWE/CheckGrammar.ag b/src-ag/Language/EWE/CheckGrammar.ag
new file mode 100644
--- /dev/null
+++ b/src-ag/Language/EWE/CheckGrammar.ag
@@ -0,0 +1,124 @@
+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"
+}
diff --git a/src/Language/EWE/AbsSyn.hs b/src/Language/EWE/AbsSyn.hs
--- a/src/Language/EWE/AbsSyn.hs
+++ b/src/Language/EWE/AbsSyn.hs
@@ -1,6 +1,6 @@
 
 
--- UUAGC 0.9.50 (src-ag/Language/EWE/AbsSyn.ag)
+-- UUAGC 0.9.50.2 (src-ag/Language/EWE/AbsSyn.ag)
 module Language.EWE.AbsSyn where
 -- Cond --------------------------------------------------------
 {-
diff --git a/src/Language/EWE/CheckGrammar.hs b/src/Language/EWE/CheckGrammar.hs
--- a/src/Language/EWE/CheckGrammar.hs
+++ b/src/Language/EWE/CheckGrammar.hs
@@ -1,15 +1,15 @@
 
 
--- UUAGC 0.9.50 (src-ag/Language/EWE/CheckGrammar.ag)
+-- UUAGC 0.9.50.2 (src-ag/Language/EWE/CheckGrammar.ag)
 module Language.EWE.CheckGrammar where
-{-# LINE 2 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+{-# 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" #-}
+{-# LINE 109 "src-ag/Language/EWE/CheckGrammar.ag" #-}
 
 isLabelDef :: String -> Set.Set String ->  Either String ()
 isLabelDef str sets
@@ -120,17 +120,17 @@
     (\ _lhsIidMemRef ->
          (let _lhsOres :: (Either String ())
               _lhsOidMemRef :: (Map.Map String Int)
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 46, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 46, column 11)
               _lhsOres =
-                  ({-# LINE 46 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 46, column 11)
               _lhsOidMemRef =
-                  ({-# LINE 50 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# LINE 50 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    Map.insert x1_ x2_ _lhsIidMemRef
                    {-# LINE 136 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -175,19 +175,19 @@
               _tlIidMemRef :: (Map.Map String Int)
               -- copy rule (up)
               _lhsOidMemRef =
-                  ({-# LINE 13 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 13 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _hdIidMemRef
                    {-# LINE 193 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -202,7 +202,7 @@
          (let _lhsOidMemRef :: (Map.Map String Int)
               -- copy rule (chain)
               _lhsOidMemRef =
-                  ({-# LINE 13 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# LINE 13 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRef
                    {-# LINE 208 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -355,15 +355,15 @@
          (let _lhsOres :: (Either String ())
               _destOidMemRefDef :: ( Map.Map String Int )
               _destIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 83, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 83, column 11)
               _lhsOres =
-                  ({-# LINE 83 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 369 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -379,15 +379,15 @@
          (let _lhsOres :: (Either String ())
               _destOidMemRefDef :: ( Map.Map String Int )
               _destIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 84, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 84, column 11)
               _lhsOres =
-                  ({-# LINE 84 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 393 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -403,15 +403,15 @@
          (let _lhsOres :: (Either String ())
               _destOidMemRefDef :: ( Map.Map String Int )
               _destIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 85, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 85, column 11)
               _lhsOres =
-                  ({-# LINE 85 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 417 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -426,15 +426,15 @@
          (let _lhsOres :: (Either String ())
               _operOidMemRefDef :: ( Map.Map String Int )
               _operIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 86, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 86, column 11)
               _lhsOres =
-                  ({-# LINE 86 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 440 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -452,21 +452,21 @@
               _operOidMemRefDef :: ( Map.Map String Int )
               _destIres :: ( Either String () )
               _operIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 87, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 87, column 11)
               _lhsOres =
-                  ({-# LINE 87 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 472 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -489,27 +489,27 @@
               _destIres :: ( Either String () )
               _leftIres :: ( Either String () )
               _rightIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 88, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 88, column 11)
               _lhsOres =
-                  ({-# LINE 88 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 515 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -534,27 +534,27 @@
               _destIres :: ( Either String () )
               _leftIres :: ( Either String () )
               _rightIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 89, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 89, column 11)
               _lhsOres =
-                  ({-# LINE 89 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 560 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -579,27 +579,27 @@
               _destIres :: ( Either String () )
               _leftIres :: ( Either String () )
               _rightIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 90, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 90, column 11)
               _lhsOres =
-                  ({-# LINE 90 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 605 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -624,27 +624,27 @@
               _destIres :: ( Either String () )
               _leftIres :: ( Either String () )
               _rightIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 91, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 91, column 11)
               _lhsOres =
-                  ({-# LINE 91 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 650 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -669,27 +669,27 @@
               _destIres :: ( Either String () )
               _leftIres :: ( Either String () )
               _rightIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 92, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 92, column 11)
               _lhsOres =
-                  ({-# LINE 92 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 695 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -712,21 +712,21 @@
               _operOidMemRefDef :: ( Map.Map String Int )
               _destIres :: ( Either String () )
               _operIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 93, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 93, column 11)
               _lhsOres =
-                  ({-# LINE 93 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 732 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -747,21 +747,21 @@
               _operOidMemRefDef :: ( Map.Map String Int )
               _destIres :: ( Either String () )
               _operIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 94, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 94, column 11)
               _lhsOres =
-                  ({-# LINE 94 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 767 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -778,15 +778,15 @@
          (let _lhsOres :: (Either String ())
               _operOidMemRefDef :: ( Map.Map String Int )
               _operIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 95, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 95, column 11)
               _lhsOres =
-                  ({-# LINE 95 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 792 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -801,15 +801,15 @@
          (let _lhsOres :: (Either String ())
               _operOidMemRefDef :: ( Map.Map String Int )
               _operIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 96, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 96, column 11)
               _lhsOres =
-                  ({-# LINE 96 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 815 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -827,21 +827,21 @@
               _rightOidMemRefDef :: ( Map.Map String Int )
               _leftIres :: ( Either String () )
               _rightIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 97, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 97, column 11)
               _lhsOres =
-                  ({-# LINE 97 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 847 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -858,15 +858,15 @@
          (let _lhsOres :: (Either String ())
               _operOidMemRefDef :: ( Map.Map String Int )
               _operIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 98, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 98, column 11)
               _lhsOres =
-                  ({-# LINE 98 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 872 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -879,9 +879,9 @@
     (\ _lhsIidMemRefDef
        _lhsIlabelFound ->
          (let _lhsOres :: (Either String ())
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 99, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 99, column 11)
               _lhsOres =
-                  ({-# LINE 99 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# LINE 99 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    Right ()
                    {-# LINE 887 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -892,9 +892,9 @@
     (\ _lhsIidMemRefDef
        _lhsIlabelFound ->
          (let _lhsOres :: (Either String ())
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 100, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 100, column 11)
               _lhsOres =
-                  ({-# LINE 100 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# LINE 100 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    isLabelDef string_ _lhsIlabelFound
                    {-# LINE 900 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -912,21 +912,21 @@
               _thenOidMemRefDef :: ( Map.Map String Int )
               _bcondIres :: ( Either String () )
               _thenIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 101, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 101, column 11)
               _lhsOres =
-                  ({-# LINE 101 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 932 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -948,21 +948,21 @@
               _thenOidMemRefDef :: ( Map.Map String Int )
               _bcondIres :: ( Either String () )
               _thenIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 102, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 102, column 11)
               _lhsOres =
-                  ({-# LINE 102 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIidMemRefDef
                    {-# LINE 968 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -976,9 +976,9 @@
     (\ _lhsIidMemRefDef
        _lhsIlabelFound ->
          (let _lhsOres :: (Either String ())
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 103, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 103, column 11)
               _lhsOres =
-                  ({-# LINE 103 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# LINE 103 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    Right ()
                    {-# LINE 984 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -988,9 +988,9 @@
     (\ _lhsIidMemRefDef
        _lhsIlabelFound ->
          (let _lhsOres :: (Either String ())
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 104, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 104, column 11)
               _lhsOres =
-                  ({-# LINE 104 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# LINE 104 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    Right ()
                    {-# LINE 996 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -1000,9 +1000,9 @@
     (\ _lhsIidMemRefDef
        _lhsIlabelFound ->
          (let _lhsOres :: (Either String ())
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 105, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 105, column 11)
               _lhsOres =
-                  ({-# LINE 105 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# LINE 105 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    Right ()
                    {-# LINE 1008 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -1053,33 +1053,33 @@
               _tlIcopy :: Labels
               _tlIlabelDef :: ( Set.Set String )
               _tlIres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 53, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 53, column 11)
               _lhsOres =
-                  ({-# LINE 53 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 53, column 11)
               _lhsOlabelDef =
-                  ({-# LINE 54 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 38 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIlabelDef
                    {-# LINE 1085 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -1092,27 +1092,27 @@
          (let _lhsOres :: ( Either String () )
               _lhsOlabelDef :: ( Set.Set String )
               _lhsOcopy :: Labels
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 55, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 55, column 11)
               _lhsOres =
-                  ({-# LINE 55 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 55, column 11)
               _lhsOlabelDef =
-                  ({-# LINE 56 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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 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" #-}
+                  ({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _copy
                    {-# LINE 1118 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -1153,9 +1153,9 @@
 sem_MRef_MRefI int_ =
     (\ _lhsIidMemRefDef ->
          (let _lhsOres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 79, column 12)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 79, column 12)
               _lhsOres =
-                  ({-# LINE 79 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# LINE 79 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    Right ()
                    {-# LINE 1161 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -1165,9 +1165,9 @@
 sem_MRef_MRefId string_ =
     (\ _lhsIidMemRefDef ->
          (let _lhsOres :: ( Either String () )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 80, column 12)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 80, column 12)
               _lhsOres =
-                  ({-# LINE 80 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# LINE 80 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    isMemRefDef string_ _lhsIidMemRefDef
                    {-# LINE 1173 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -1209,33 +1209,33 @@
          _stmsIlabelDef :: (Set.Set String)
          _stmsIres :: (Either String ())
          _equatesIidMemRef :: (Map.Map String Int)
-         -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 59, column 9)
+         -- "src-ag/Language/EWE/CheckGrammar.ag"(line 59, column 9)
          _stmsOlabelDef =
-             ({-# LINE 59 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+             ({-# 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)
+         -- "src-ag/Language/EWE/CheckGrammar.ag"(line 59, column 9)
          _stmsOlabelFound =
-             ({-# LINE 60 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+             ({-# 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)
+         -- "src-ag/Language/EWE/CheckGrammar.ag"(line 59, column 9)
          _stmsOidMemRefDef =
-             ({-# LINE 61 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+             ({-# 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)
+         -- "src-ag/Language/EWE/CheckGrammar.ag"(line 62, column 9)
          _equatesOidMemRef =
-             ({-# LINE 62 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+             ({-# 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" #-}
+             ({-# LINE 10 "src-ag/Language/EWE/CheckGrammar.ag" #-}
               _stmsIres
               {-# LINE 1241 "src/Language/EWE/CheckGrammar.hs" #-}
               )
@@ -1295,9 +1295,9 @@
               _labelsIlabelDef :: ( Set.Set String )
               _labelsIres :: ( Either String () )
               _instrIres :: (Either String ())
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 65, column 10)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 65, column 10)
               _res1 =
-                  ({-# LINE 65 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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,
@@ -1309,33 +1309,33 @@
                       else Right ()
                    {-# LINE 1311 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
-              -- "./src-ag/Language/EWE/CheckGrammar.ag"(line 76, column 11)
+              -- "src-ag/Language/EWE/CheckGrammar.ag"(line 76, column 11)
               _lhsOres =
-                  ({-# LINE 76 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 32 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIlabelFound
                    {-# LINE 1341 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -1397,51 +1397,51 @@
               _hdIres :: (Either String ())
               _tlIlabelDef :: (Set.Set String)
               _tlIres :: (Either String ())
-              -- use rule "./src-ag/Language/EWE/CheckGrammar.ag"(line 23, column 12)
+              -- use rule "src-ag/Language/EWE/CheckGrammar.ag"(line 23, column 12)
               _lhsOres =
-                  ({-# LINE 23 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 21 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIlabelFound
                    {-# LINE 1447 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
@@ -1457,15 +1457,15 @@
        _lhsIlabelFound ->
          (let _lhsOres :: (Either String ())
               _lhsOlabelDef :: (Set.Set String)
-              -- use rule "./src-ag/Language/EWE/CheckGrammar.ag"(line 23, column 12)
+              -- use rule "src-ag/Language/EWE/CheckGrammar.ag"(line 23, column 12)
               _lhsOres =
-                  ({-# LINE 23 "./src-ag/Language/EWE/CheckGrammar.ag" #-}
+                  ({-# 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" #-}
+                  ({-# LINE 20 "src-ag/Language/EWE/CheckGrammar.ag" #-}
                    _lhsIlabelDef
                    {-# LINE 1471 "src/Language/EWE/CheckGrammar.hs" #-}
                    )
diff --git a/src/Language/EWE/VM.hs b/src/Language/EWE/VM.hs
--- a/src/Language/EWE/VM.hs
+++ b/src/Language/EWE/VM.hs
@@ -41,7 +41,7 @@
 
 evalVM :: StateVMM ()
 evalVM = do
-  lift $ hPutStrLn stdout "Iniciando maquina"
+  -- lift $ hPutStrLn stdout "Iniciando maquina"
   evalInstr
 
 initVM :: Prog -> StateVM
@@ -83,13 +83,13 @@
              put st''
              evalInstr
          (IRS _ _) -> do
-           s <- lift $ getLine
+           s <- lift $ readStr "Enter an string:"
            let st'' = execIRS s ci st
            put st''
            evalInstr
          (IWS _) -> do
              let (st'',s) = execIWS ci st
-             lift $ putStrLn s
+             lift $ putStrLn (show s)
              put st''
              evalInstr
          (IH)      -> return ()
@@ -207,11 +207,11 @@
 execIRS s (IRS mr1 mr2) state =
   let ge'     = ge state
       startP  = mRef mr1 ge'
-      endP    = mRef mr1 ge'
-      state'  = moveStrInMem s startP endP state
-  in if (startP <= endP)
+      lenStr  = mRef mr2 ge'
+      state'  = moveStrInMem s startP (startP + lenStr) state
+  in if lenStr >= 0
      then state' { pc = incrPC state }
-     else error "IRS start > end"
+     else error "IRS len is negative"
 
 moveStrInMem :: String -> Int -> Int -> StateVM -> StateVM
 moveStrInMem [] st en state
@@ -280,3 +280,11 @@
   putStr (msg ++ "> ")
   hFlush stdout
   readLn
+
+readStr :: String -> IO String
+readStr msg = do
+  putStr (msg ++ "> ")
+  hFlush stdout
+  s <- getLine
+  -- putStrLn s
+  return $ s
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -6,6 +6,7 @@
                 ,stderr, hPutStr, hPutStrLn)
 import System.Exit(ExitCode(..),exitSuccess)
 import Data.Version(Version(..), showVersion)
+import System.Exit(exitSuccess)
 import System.Console.GetOpt
 import Data.Maybe(fromMaybe)
 import Control.Monad(when)
@@ -17,23 +18,30 @@
 import Language.EWE.CheckGrammar
 
 data Options =  Options { optShowVersion :: Bool
+                        , optShowHelp    :: Bool
                         , optNoExec      :: Bool
                         , optScanOut     :: Bool
                         , optParserOut   :: Bool
+                        , optDebug       :: Bool
                         } deriving Show
 
 defaultOptions :: Options
 defaultOptions = Options { optShowVersion = False
-                         , optNoExec = True
-                         , optScanOut  = False
-                         , optParserOut = False
+                         , optShowHelp    = False
+                         , optNoExec      = True
+                         , optScanOut     = False
+                         , optParserOut   = False
+                         , optDebug       = False
                          }
 
 options :: [OptDescr (Options -> Options)]
 options =
-  [ Option ['v','?'] ["version"]
+  [ Option ['v'] ["version"]
     (NoArg (\opts -> opts { optShowVersion  = True }))
     "show version number"
+  , Option ['h', '?'] ["help"]
+    (NoArg (\opts -> opts { optShowHelp = True }))
+    "show help menu"
   , Option ['n'] ["noexec"]
     (NoArg (\opts -> opts { optNoExec = False }))
     "execute the current file with ewe-vm"
@@ -43,6 +51,9 @@
   , Option ['s'] ["scanner"]
     (NoArg (\opts -> opts { optScanOut = True }))
     "show scan info"
+  , Option ['d'] ["debug"]
+    (NoArg (\opts -> opts { optDebug = True }))
+    "show debug info"
   ]
 
 compilerOpts :: [String] -> IO (Options, [String])
@@ -64,26 +75,34 @@
        Left  msg  ->  hPutStrLn stderr $ show msg
        Right prog ->  hPutStrLn stdout $ show prog
 
-execProg :: Bool -> Either String Prog -> IO ()
-execProg True _ = return ()
-execProg False (Right prog) = do
+showHelp :: IO ()
+showHelp = do
+  hPutStrLn stderr $ show (usageInfo header options) 
+  exitSuccess
+  where header = "Usage: ewe [OPTION...] files..."
+
+execProg :: Options -> Bool -> Either String Prog -> IO ()
+execProg _    True   _           = return ()
+execProg opts False (Right prog) = do
    r <- execVM prog
-   hPutStrLn stdout $ show r
-execProg False _ = return ()
+   return ()
+   when (optDebug opts) (hPutStrLn stdout $ show r)
+execProg _    False _ = return ()
 
 processFile :: Options -> FilePath -> IO ()
 processFile opts fp = do
-  hPutStrLn stdout $ "Processing file: " ++ fp
+  when (optDebug opts) (hPutStrLn stdout $ "Processing file: " ++ fp)
   fh   <- openFile fp ReadMode
   s    <- hGetContents fh
   let  scanout = runAlex s alexExec
        pRes   = pEWE s
        errorParser           = either (\_ -> True)  (\_ -> False) pRes
        (passGrammar,errGram) = either (\_ -> (False,[])) checkGrammar  pRes
+  when (optShowHelp opts)              (showHelp)
   when (optScanOut opts)               (showScannerOutput scanout)
   when (optParserOut opts)             (showParserOutput pRes)
   when (not passGrammar)               (showErrorGrammar errGram)
-  when (optNoExec opts && passGrammar) (execProg errorParser pRes)
+  when (optNoExec opts && passGrammar) (execProg opts errorParser pRes)
   hClose fh
 
 showErrorGrammar :: String -> IO ()
@@ -96,7 +115,7 @@
                     in case (res_Syn_Prog syn) of
                          Left msg -> (False, msg)
                          Right () -> (True, [])
- 
+
 processStaticOptions :: Options -> IO ()
 processStaticOptions opts =
   if optShowVersion opts
