ewe 0.1.0.32 → 0.1.0.38
raw patch · 9 files changed
+413/−334 lines, 9 files
Files
- dist/build/ewe/ewe-tmp/Language/EWE/Parser.hs +31/−75
- dist/build/ewe/ewe-tmp/Language/EWE/Scanner.hs +14/−100
- ewe.cabal +3/−2
- src-ag/Language/EWE/AbsSyn.ag +57/−0
- src-ag/Language/EWE/CheckGrammar.ag +124/−0
- src/Language/EWE/AbsSyn.hs +1/−1
- src/Language/EWE/CheckGrammar.hs +137/−137
- src/Language/EWE/VM.hs +15/−7
- src/Main.hs +31/−12
dist/build/ewe/ewe-tmp/Language/EWE/Parser.hs view
@@ -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
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.@@ -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
ewe.cabal view
@@ -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
+ src-ag/Language/EWE/AbsSyn.ag view
@@ -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
+ src-ag/Language/EWE/CheckGrammar.ag view
@@ -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"+}
src/Language/EWE/AbsSyn.hs view
@@ -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 -------------------------------------------------------- {-
src/Language/EWE/CheckGrammar.hs view
@@ -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" #-} )
src/Language/EWE/VM.hs view
@@ -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
src/Main.hs view
@@ -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