ewe-0.1.0.43: src/Language/EWE/CheckGrammar.hs
-- UUAGC 0.9.52.1 (src-ag/Language/EWE/CheckGrammar.ag)
module Language.EWE.CheckGrammar where
{-# LINE 2 "src-ag/Language/EWE/PPProg.ag" #-}
import Text.PrettyPrint
{-# LINE 9 "src/Language/EWE/CheckGrammar.hs" #-}
{-# LINE 2 "src-ag/Language/EWE/CheckGrammar.ag" #-}
import qualified Data.Set as Set
import qualified Data.Map as Map
import Language.EWE.AbsSyn
import Language.EWE.Utils
{-# LINE 17 "src/Language/EWE/CheckGrammar.hs" #-}
{-# LINE 124 "src-ag/Language/EWE/PPProg.ag" #-}
(<==>) :: String -> Doc -> Doc
s <==> doc = text s $$ doc
{-# LINE 22 "src/Language/EWE/CheckGrammar.hs" #-}
{-# LINE 110 "src-ag/Language/EWE/CheckGrammar.ag" #-}
isLabelDef :: String -> Set.Set String -> Either String ()
isLabelDef str sets
| str `Set.member` sets = Right ()
| otherwise = Left $ "Label: " ++ str ++ " is not defined "
isLabelNotDef :: String -> Set.Set String -> Either String ()
isLabelNotDef str sets
| str `Set.member` sets = Left $ "Label: " ++ str ++ " is already defined "
| otherwise = Right ()
isMemRefDef :: String -> Map.Map String Int -> Either String ()
isMemRefDef str map
| str `Map.member` map = Right ()
| otherwise = Left $ "Mem Ref: " ++ str ++ " is not defined"
{-# LINE 40 "src/Language/EWE/CheckGrammar.hs" #-}
-- Cond --------------------------------------------------------
{-
visit 0:
synthesized attribute:
pp : Doc
alternatives:
alternative CLET:
alternative CLT:
alternative CGET:
alternative CGT:
alternative CE:
alternative CNE:
-}
-- cata
sem_Cond :: Cond ->
T_Cond
sem_Cond (CLET) =
(sem_Cond_CLET)
sem_Cond (CLT) =
(sem_Cond_CLT)
sem_Cond (CGET) =
(sem_Cond_CGET)
sem_Cond (CGT) =
(sem_Cond_CGT)
sem_Cond (CE) =
(sem_Cond_CE)
sem_Cond (CNE) =
(sem_Cond_CNE)
-- semantic domain
type T_Cond = ( Doc)
data Inh_Cond = Inh_Cond {}
data Syn_Cond = Syn_Cond {pp_Syn_Cond :: Doc}
wrap_Cond :: T_Cond ->
Inh_Cond ->
Syn_Cond
wrap_Cond sem (Inh_Cond) =
(let ( _lhsOpp) = sem
in (Syn_Cond _lhsOpp))
sem_Cond_CLET :: T_Cond
sem_Cond_CLET =
(let _lhsOpp :: Doc
-- "src-ag/Language/EWE/PPProg.ag"(line 39, column 11)
_lhsOpp =
({-# LINE 39 "src-ag/Language/EWE/PPProg.ag" #-}
text "<="
{-# LINE 86 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp))
sem_Cond_CLT :: T_Cond
sem_Cond_CLT =
(let _lhsOpp :: Doc
-- "src-ag/Language/EWE/PPProg.ag"(line 40, column 11)
_lhsOpp =
({-# LINE 40 "src-ag/Language/EWE/PPProg.ag" #-}
char '<'
{-# LINE 96 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp))
sem_Cond_CGET :: T_Cond
sem_Cond_CGET =
(let _lhsOpp :: Doc
-- "src-ag/Language/EWE/PPProg.ag"(line 41, column 11)
_lhsOpp =
({-# LINE 41 "src-ag/Language/EWE/PPProg.ag" #-}
text ">="
{-# LINE 106 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp))
sem_Cond_CGT :: T_Cond
sem_Cond_CGT =
(let _lhsOpp :: Doc
-- "src-ag/Language/EWE/PPProg.ag"(line 42, column 11)
_lhsOpp =
({-# LINE 42 "src-ag/Language/EWE/PPProg.ag" #-}
char '>'
{-# LINE 116 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp))
sem_Cond_CE :: T_Cond
sem_Cond_CE =
(let _lhsOpp :: Doc
-- "src-ag/Language/EWE/PPProg.ag"(line 43, column 11)
_lhsOpp =
({-# LINE 43 "src-ag/Language/EWE/PPProg.ag" #-}
char '='
{-# LINE 126 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp))
sem_Cond_CNE :: T_Cond
sem_Cond_CNE =
(let _lhsOpp :: Doc
-- "src-ag/Language/EWE/PPProg.ag"(line 44, column 11)
_lhsOpp =
({-# LINE 44 "src-ag/Language/EWE/PPProg.ag" #-}
text "<>"
{-# LINE 136 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp))
-- Equ ---------------------------------------------------------
{-
visit 0:
chained attribute:
idMemRef : Map.Map String Int
synthesized attributes:
pp : Doc
res : Either String ()
alternatives:
alternative Tuple:
child x1 : {String}
child x2 : {Int}
-}
-- cata
sem_Equ :: Equ ->
T_Equ
sem_Equ ( x1,x2) =
(sem_Equ_Tuple x1 x2)
-- semantic domain
type T_Equ = (Map.Map String Int) ->
( (Map.Map String Int),Doc,(Either String ()))
data Inh_Equ = Inh_Equ {idMemRef_Inh_Equ :: (Map.Map String Int)}
data Syn_Equ = Syn_Equ {idMemRef_Syn_Equ :: (Map.Map String Int),pp_Syn_Equ :: Doc,res_Syn_Equ :: (Either String ())}
wrap_Equ :: T_Equ ->
Inh_Equ ->
Syn_Equ
wrap_Equ sem (Inh_Equ _lhsIidMemRef) =
(let ( _lhsOidMemRef,_lhsOpp,_lhsOres) = sem _lhsIidMemRef
in (Syn_Equ _lhsOidMemRef _lhsOpp _lhsOres))
sem_Equ_Tuple :: String ->
Int ->
T_Equ
sem_Equ_Tuple x1_ x2_ =
(\ _lhsIidMemRef ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_lhsOidMemRef :: (Map.Map String Int)
-- "src-ag/Language/EWE/PPProg.ag"(line 47, column 11)
_lhsOpp =
({-# LINE 47 "src-ag/Language/EWE/PPProg.ag" #-}
text "equ" <+> nest 5 (text x1_)
<+> nest 10 (text "M" <> brackets (int x2_))
{-# LINE 181 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 46, column 11)
_lhsOres =
({-# LINE 46 "src-ag/Language/EWE/CheckGrammar.ag" #-}
if x1_ `Map.member` _lhsIidMemRef
then Left $ x1_ ++ " was already defined "
else Right ()
{-# LINE 189 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 46, column 11)
_lhsOidMemRef =
({-# LINE 50 "src-ag/Language/EWE/CheckGrammar.ag" #-}
Map.insert x1_ x2_ _lhsIidMemRef
{-# LINE 195 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOidMemRef,_lhsOpp,_lhsOres)))
-- Equates -----------------------------------------------------
{-
visit 0:
chained attribute:
idMemRef : Map.Map String Int
synthesized attribute:
pp : Doc
alternatives:
alternative Cons:
child hd : Equ
child tl : Equates
alternative Nil:
-}
-- cata
sem_Equates :: Equates ->
T_Equates
sem_Equates list =
(Prelude.foldr sem_Equates_Cons sem_Equates_Nil (Prelude.map sem_Equ list))
-- semantic domain
type T_Equates = (Map.Map String Int) ->
( (Map.Map String Int),Doc)
data Inh_Equates = Inh_Equates {idMemRef_Inh_Equates :: (Map.Map String Int)}
data Syn_Equates = Syn_Equates {idMemRef_Syn_Equates :: (Map.Map String Int),pp_Syn_Equates :: Doc}
wrap_Equates :: T_Equates ->
Inh_Equates ->
Syn_Equates
wrap_Equates sem (Inh_Equates _lhsIidMemRef) =
(let ( _lhsOidMemRef,_lhsOpp) = sem _lhsIidMemRef
in (Syn_Equates _lhsOidMemRef _lhsOpp))
sem_Equates_Cons :: T_Equ ->
T_Equates ->
T_Equates
sem_Equates_Cons hd_ tl_ =
(\ _lhsIidMemRef ->
(let _lhsOpp :: Doc
_lhsOidMemRef :: (Map.Map String Int)
_hdOidMemRef :: (Map.Map String Int)
_tlOidMemRef :: (Map.Map String Int)
_hdIidMemRef :: (Map.Map String Int)
_hdIpp :: Doc
_hdIres :: (Either String ())
_tlIidMemRef :: (Map.Map String Int)
_tlIpp :: Doc
-- use rule "src-ag/Language/EWE/PPProg.ag"(line 16, column 10)
_lhsOpp =
({-# LINE 16 "src-ag/Language/EWE/PPProg.ag" #-}
_hdIpp $$ _tlIpp
{-# LINE 245 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (up)
_lhsOidMemRef =
({-# LINE 13 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_tlIidMemRef
{-# LINE 251 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_hdOidMemRef =
({-# LINE 16 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRef
{-# LINE 257 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (chain)
_tlOidMemRef =
({-# LINE 13 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_hdIidMemRef
{-# LINE 263 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _hdIidMemRef,_hdIpp,_hdIres) =
hd_ _hdOidMemRef
( _tlIidMemRef,_tlIpp) =
tl_ _tlOidMemRef
in ( _lhsOidMemRef,_lhsOpp)))
sem_Equates_Nil :: T_Equates
sem_Equates_Nil =
(\ _lhsIidMemRef ->
(let _lhsOpp :: Doc
_lhsOidMemRef :: (Map.Map String Int)
-- use rule "src-ag/Language/EWE/PPProg.ag"(line 16, column 10)
_lhsOpp =
({-# LINE 16 "src-ag/Language/EWE/PPProg.ag" #-}
empty
{-# LINE 279 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (chain)
_lhsOidMemRef =
({-# LINE 13 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRef
{-# LINE 285 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOidMemRef,_lhsOpp)))
-- Instr -------------------------------------------------------
{-
visit 0:
inherited attributes:
idMemRefDef : Map.Map String Int
labelFound : Set.Set String
synthesized attributes:
pp : Doc
res : Either String ()
alternatives:
alternative IMMI:
child dest : MRef
child int : {Int}
alternative IMMS:
child dest : MRef
child string : {String}
alternative IMRPC:
child dest : MRef
child int : {Int}
alternative SPC:
child oper : MRef
alternative IMMM:
child dest : MRef
child oper : MRef
alternative IAdd:
child dest : MRef
child left : MRef
child right : MRef
alternative ISub:
child dest : MRef
child left : MRef
child right : MRef
alternative IMul:
child dest : MRef
child left : MRef
child right : MRef
alternative IDiv:
child dest : MRef
child left : MRef
child right : MRef
alternative IMod:
child dest : MRef
child left : MRef
child right : MRef
alternative IMRI:
child dest : MRef
child oper : MRef
child int : {Int}
alternative IMMR:
child dest : MRef
child int : {Int}
child oper : MRef
alternative IRI:
child oper : MRef
alternative IWI:
child oper : MRef
alternative IRS:
child left : MRef
child right : MRef
alternative IWS:
child oper : MRef
alternative IGI:
child int : {Int}
alternative IGS:
child string : {String}
alternative IFI:
child bcond : MRef
child cond : Cond
child then : MRef
child int : {Int}
alternative IFS:
child bcond : MRef
child cond : Cond
child then : MRef
child string : {String}
alternative IH:
alternative IB:
alternative INI:
-}
-- cata
sem_Instr :: Instr ->
T_Instr
sem_Instr (IMMI _dest _int) =
(sem_Instr_IMMI (sem_MRef _dest) _int)
sem_Instr (IMMS _dest _string) =
(sem_Instr_IMMS (sem_MRef _dest) _string)
sem_Instr (IMRPC _dest _int) =
(sem_Instr_IMRPC (sem_MRef _dest) _int)
sem_Instr (SPC _oper) =
(sem_Instr_SPC (sem_MRef _oper))
sem_Instr (IMMM _dest _oper) =
(sem_Instr_IMMM (sem_MRef _dest) (sem_MRef _oper))
sem_Instr (IAdd _dest _left _right) =
(sem_Instr_IAdd (sem_MRef _dest) (sem_MRef _left) (sem_MRef _right))
sem_Instr (ISub _dest _left _right) =
(sem_Instr_ISub (sem_MRef _dest) (sem_MRef _left) (sem_MRef _right))
sem_Instr (IMul _dest _left _right) =
(sem_Instr_IMul (sem_MRef _dest) (sem_MRef _left) (sem_MRef _right))
sem_Instr (IDiv _dest _left _right) =
(sem_Instr_IDiv (sem_MRef _dest) (sem_MRef _left) (sem_MRef _right))
sem_Instr (IMod _dest _left _right) =
(sem_Instr_IMod (sem_MRef _dest) (sem_MRef _left) (sem_MRef _right))
sem_Instr (IMRI _dest _oper _int) =
(sem_Instr_IMRI (sem_MRef _dest) (sem_MRef _oper) _int)
sem_Instr (IMMR _dest _int _oper) =
(sem_Instr_IMMR (sem_MRef _dest) _int (sem_MRef _oper))
sem_Instr (IRI _oper) =
(sem_Instr_IRI (sem_MRef _oper))
sem_Instr (IWI _oper) =
(sem_Instr_IWI (sem_MRef _oper))
sem_Instr (IRS _left _right) =
(sem_Instr_IRS (sem_MRef _left) (sem_MRef _right))
sem_Instr (IWS _oper) =
(sem_Instr_IWS (sem_MRef _oper))
sem_Instr (IGI _int) =
(sem_Instr_IGI _int)
sem_Instr (IGS _string) =
(sem_Instr_IGS _string)
sem_Instr (IFI _bcond _cond _then _int) =
(sem_Instr_IFI (sem_MRef _bcond) (sem_Cond _cond) (sem_MRef _then) _int)
sem_Instr (IFS _bcond _cond _then _string) =
(sem_Instr_IFS (sem_MRef _bcond) (sem_Cond _cond) (sem_MRef _then) _string)
sem_Instr (IH) =
(sem_Instr_IH)
sem_Instr (IB) =
(sem_Instr_IB)
sem_Instr (INI) =
(sem_Instr_INI)
-- semantic domain
type T_Instr = (Map.Map String Int) ->
(Set.Set String) ->
( Doc,(Either String ()))
data Inh_Instr = Inh_Instr {idMemRefDef_Inh_Instr :: (Map.Map String Int),labelFound_Inh_Instr :: (Set.Set String)}
data Syn_Instr = Syn_Instr {pp_Syn_Instr :: Doc,res_Syn_Instr :: (Either String ())}
wrap_Instr :: T_Instr ->
Inh_Instr ->
Syn_Instr
wrap_Instr sem (Inh_Instr _lhsIidMemRefDef _lhsIlabelFound) =
(let ( _lhsOpp,_lhsOres) = sem _lhsIidMemRefDef _lhsIlabelFound
in (Syn_Instr _lhsOpp _lhsOres))
sem_Instr_IMMI :: T_MRef ->
Int ->
T_Instr
sem_Instr_IMMI dest_ int_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_destOidMemRefDef :: ( Map.Map String Int )
_destIpp :: Doc
_destIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 57, column 11)
_lhsOpp =
({-# LINE 57 "src-ag/Language/EWE/PPProg.ag" #-}
_destIpp <+> nest 5 (text ":=") <+> nest 5 (int int_)
{-# LINE 443 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 83, column 11)
_lhsOres =
({-# LINE 83 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_destIres
{-# LINE 449 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_destOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 455 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _destIpp,_destIres) =
dest_ _destOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IMMS :: T_MRef ->
String ->
T_Instr
sem_Instr_IMMS dest_ string_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_destOidMemRefDef :: ( Map.Map String Int )
_destIpp :: Doc
_destIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 58, column 11)
_lhsOpp =
({-# LINE 58 "src-ag/Language/EWE/PPProg.ag" #-}
_destIpp <+> nest 5 (text ":=")
<+> nest 5 (doubleQuotes (text string_))
{-# LINE 476 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 84, column 11)
_lhsOres =
({-# LINE 84 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_destIres
{-# LINE 482 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_destOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 488 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _destIpp,_destIres) =
dest_ _destOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IMRPC :: T_MRef ->
Int ->
T_Instr
sem_Instr_IMRPC dest_ int_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_destOidMemRefDef :: ( Map.Map String Int )
_destIpp :: Doc
_destIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 60, column 11)
_lhsOpp =
({-# LINE 60 "src-ag/Language/EWE/PPProg.ag" #-}
_destIpp <+> nest 5 (text ":=")
<+> nest 5 (text "PC")
<+> char '+'
<+> int int_
{-# LINE 511 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 85, column 11)
_lhsOres =
({-# LINE 85 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_destIres
{-# LINE 517 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_destOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 523 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _destIpp,_destIres) =
dest_ _destOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_SPC :: T_MRef ->
T_Instr
sem_Instr_SPC oper_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_operOidMemRefDef :: ( Map.Map String Int )
_operIpp :: Doc
_operIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 65, column 11)
_lhsOpp =
({-# LINE 65 "src-ag/Language/EWE/PPProg.ag" #-}
text "PC" <+> nest 5 (text ":=")
<+> nest 5 _operIpp
{-# LINE 543 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 86, column 11)
_lhsOres =
({-# LINE 86 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_operIres
{-# LINE 549 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_operOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 555 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _operIpp,_operIres) =
oper_ _operOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IMMM :: T_MRef ->
T_MRef ->
T_Instr
sem_Instr_IMMM dest_ oper_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_destOidMemRefDef :: ( Map.Map String Int )
_operOidMemRefDef :: ( Map.Map String Int )
_destIpp :: Doc
_destIres :: ( Either String () )
_operIpp :: Doc
_operIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 68, column 11)
_lhsOpp =
({-# LINE 68 "src-ag/Language/EWE/PPProg.ag" #-}
_destIpp <+> nest 5 (text ":=")
<+> nest 5 _operIpp
{-# LINE 579 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 87, column 11)
_lhsOres =
({-# LINE 87 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_destIres <--> _operIres
{-# LINE 585 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_destOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 591 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_operOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 597 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _destIpp,_destIres) =
dest_ _destOidMemRefDef
( _operIpp,_operIres) =
oper_ _operOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IAdd :: T_MRef ->
T_MRef ->
T_MRef ->
T_Instr
sem_Instr_IAdd dest_ left_ right_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_destOidMemRefDef :: ( Map.Map String Int )
_leftOidMemRefDef :: ( Map.Map String Int )
_rightOidMemRefDef :: ( Map.Map String Int )
_destIpp :: Doc
_destIres :: ( Either String () )
_leftIpp :: Doc
_leftIres :: ( Either String () )
_rightIpp :: Doc
_rightIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 71, column 11)
_lhsOpp =
({-# LINE 71 "src-ag/Language/EWE/PPProg.ag" #-}
_destIpp <+> nest 5 (text ":=")
<+> nest 5 _leftIpp
<+> char '+'
<+> _rightIpp
{-# LINE 629 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 88, column 11)
_lhsOres =
({-# LINE 88 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_destIres <--> _leftIres <--> _rightIres
{-# LINE 635 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_destOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 641 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_leftOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 647 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_rightOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 653 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _destIpp,_destIres) =
dest_ _destOidMemRefDef
( _leftIpp,_leftIres) =
left_ _leftOidMemRefDef
( _rightIpp,_rightIres) =
right_ _rightOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_ISub :: T_MRef ->
T_MRef ->
T_MRef ->
T_Instr
sem_Instr_ISub dest_ left_ right_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_destOidMemRefDef :: ( Map.Map String Int )
_leftOidMemRefDef :: ( Map.Map String Int )
_rightOidMemRefDef :: ( Map.Map String Int )
_destIpp :: Doc
_destIres :: ( Either String () )
_leftIpp :: Doc
_leftIres :: ( Either String () )
_rightIpp :: Doc
_rightIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 76, column 11)
_lhsOpp =
({-# LINE 76 "src-ag/Language/EWE/PPProg.ag" #-}
_destIpp <+> nest 5 (text ":=")
<+> nest 5 _leftIpp
<+> char '-'
<+> _rightIpp
{-# LINE 687 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 89, column 11)
_lhsOres =
({-# LINE 89 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_destIres <--> _leftIres <--> _rightIres
{-# LINE 693 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_destOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 699 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_leftOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 705 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_rightOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 711 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _destIpp,_destIres) =
dest_ _destOidMemRefDef
( _leftIpp,_leftIres) =
left_ _leftOidMemRefDef
( _rightIpp,_rightIres) =
right_ _rightOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IMul :: T_MRef ->
T_MRef ->
T_MRef ->
T_Instr
sem_Instr_IMul dest_ left_ right_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_destOidMemRefDef :: ( Map.Map String Int )
_leftOidMemRefDef :: ( Map.Map String Int )
_rightOidMemRefDef :: ( Map.Map String Int )
_destIpp :: Doc
_destIres :: ( Either String () )
_leftIpp :: Doc
_leftIres :: ( Either String () )
_rightIpp :: Doc
_rightIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 81, column 11)
_lhsOpp =
({-# LINE 81 "src-ag/Language/EWE/PPProg.ag" #-}
_destIpp <+> nest 5 (text ":=")
<+> nest 5 _leftIpp
<+> char '*'
<+> _rightIpp
{-# LINE 745 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 90, column 11)
_lhsOres =
({-# LINE 90 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_destIres <--> _leftIres <--> _rightIres
{-# LINE 751 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_destOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 757 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_leftOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 763 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_rightOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 769 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _destIpp,_destIres) =
dest_ _destOidMemRefDef
( _leftIpp,_leftIres) =
left_ _leftOidMemRefDef
( _rightIpp,_rightIres) =
right_ _rightOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IDiv :: T_MRef ->
T_MRef ->
T_MRef ->
T_Instr
sem_Instr_IDiv dest_ left_ right_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_destOidMemRefDef :: ( Map.Map String Int )
_leftOidMemRefDef :: ( Map.Map String Int )
_rightOidMemRefDef :: ( Map.Map String Int )
_destIpp :: Doc
_destIres :: ( Either String () )
_leftIpp :: Doc
_leftIres :: ( Either String () )
_rightIpp :: Doc
_rightIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 86, column 11)
_lhsOpp =
({-# LINE 86 "src-ag/Language/EWE/PPProg.ag" #-}
_destIpp <+> nest 5 (text ":=")
<+> nest 5 _leftIpp
<+> char '/'
<+> _rightIpp
{-# LINE 803 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 91, column 11)
_lhsOres =
({-# LINE 91 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_destIres <--> _leftIres <--> _rightIres
{-# LINE 809 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_destOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 815 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_leftOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 821 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_rightOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 827 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _destIpp,_destIres) =
dest_ _destOidMemRefDef
( _leftIpp,_leftIres) =
left_ _leftOidMemRefDef
( _rightIpp,_rightIres) =
right_ _rightOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IMod :: T_MRef ->
T_MRef ->
T_MRef ->
T_Instr
sem_Instr_IMod dest_ left_ right_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_destOidMemRefDef :: ( Map.Map String Int )
_leftOidMemRefDef :: ( Map.Map String Int )
_rightOidMemRefDef :: ( Map.Map String Int )
_destIpp :: Doc
_destIres :: ( Either String () )
_leftIpp :: Doc
_leftIres :: ( Either String () )
_rightIpp :: Doc
_rightIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 91, column 11)
_lhsOpp =
({-# LINE 91 "src-ag/Language/EWE/PPProg.ag" #-}
_destIpp <+> nest 5 (text ":=")
<+> nest 5 _leftIpp
<+> char '%'
<+> _rightIpp
{-# LINE 861 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 92, column 11)
_lhsOres =
({-# LINE 92 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_destIres <--> _leftIres <--> _rightIres
{-# LINE 867 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_destOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 873 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_leftOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 879 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_rightOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 885 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _destIpp,_destIres) =
dest_ _destOidMemRefDef
( _leftIpp,_leftIres) =
left_ _leftOidMemRefDef
( _rightIpp,_rightIres) =
right_ _rightOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IMRI :: T_MRef ->
T_MRef ->
Int ->
T_Instr
sem_Instr_IMRI dest_ oper_ int_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_destOidMemRefDef :: ( Map.Map String Int )
_operOidMemRefDef :: ( Map.Map String Int )
_destIpp :: Doc
_destIres :: ( Either String () )
_operIpp :: Doc
_operIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 96, column 11)
_lhsOpp =
({-# LINE 96 "src-ag/Language/EWE/PPProg.ag" #-}
_destIpp <+> nest 5 (text ":=")
<+> nest 5 (char 'M')
<> brackets (_operIpp
<+> char '+'
<+> int int_)
{-# LINE 917 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 93, column 11)
_lhsOres =
({-# LINE 93 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_destIres <--> _operIres
{-# LINE 923 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_destOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 929 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_operOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 935 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _destIpp,_destIres) =
dest_ _destOidMemRefDef
( _operIpp,_operIres) =
oper_ _operOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IMMR :: T_MRef ->
Int ->
T_MRef ->
T_Instr
sem_Instr_IMMR dest_ int_ oper_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_destOidMemRefDef :: ( Map.Map String Int )
_operOidMemRefDef :: ( Map.Map String Int )
_destIpp :: Doc
_destIres :: ( Either String () )
_operIpp :: Doc
_operIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 102, column 11)
_lhsOpp =
({-# LINE 102 "src-ag/Language/EWE/PPProg.ag" #-}
char 'M' <> brackets (_destIpp
<+> char '+'
<+> int int_)
<+> nest 5 (text ":=")
<+> nest 5 _operIpp
{-# LINE 965 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 94, column 11)
_lhsOres =
({-# LINE 94 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_destIres <--> _operIres
{-# LINE 971 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_destOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 977 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_operOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 983 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _destIpp,_destIres) =
dest_ _destOidMemRefDef
( _operIpp,_operIres) =
oper_ _operOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IRI :: T_MRef ->
T_Instr
sem_Instr_IRI oper_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_operOidMemRefDef :: ( Map.Map String Int )
_operIpp :: Doc
_operIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 108, column 11)
_lhsOpp =
({-# LINE 108 "src-ag/Language/EWE/PPProg.ag" #-}
text "readInt" <> parens _operIpp
{-# LINE 1004 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 95, column 11)
_lhsOres =
({-# LINE 95 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_operIres
{-# LINE 1010 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_operOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1016 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _operIpp,_operIres) =
oper_ _operOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IWI :: T_MRef ->
T_Instr
sem_Instr_IWI oper_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_operOidMemRefDef :: ( Map.Map String Int )
_operIpp :: Doc
_operIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 109, column 11)
_lhsOpp =
({-# LINE 109 "src-ag/Language/EWE/PPProg.ag" #-}
text "writeInt" <> parens _operIpp
{-# LINE 1035 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 96, column 11)
_lhsOres =
({-# LINE 96 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_operIres
{-# LINE 1041 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_operOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1047 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _operIpp,_operIres) =
oper_ _operOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IRS :: T_MRef ->
T_MRef ->
T_Instr
sem_Instr_IRS left_ right_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_leftOidMemRefDef :: ( Map.Map String Int )
_rightOidMemRefDef :: ( Map.Map String Int )
_leftIpp :: Doc
_leftIres :: ( Either String () )
_rightIpp :: Doc
_rightIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 110, column 11)
_lhsOpp =
({-# LINE 110 "src-ag/Language/EWE/PPProg.ag" #-}
text "readStr" <> parens (_leftIpp <> comma
<+> _rightIpp)
{-# LINE 1071 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 97, column 11)
_lhsOres =
({-# LINE 97 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_leftIres <--> _rightIres
{-# LINE 1077 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_leftOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1083 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_rightOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1089 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _leftIpp,_leftIres) =
left_ _leftOidMemRefDef
( _rightIpp,_rightIres) =
right_ _rightOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IWS :: T_MRef ->
T_Instr
sem_Instr_IWS oper_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_operOidMemRefDef :: ( Map.Map String Int )
_operIpp :: Doc
_operIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 112, column 11)
_lhsOpp =
({-# LINE 112 "src-ag/Language/EWE/PPProg.ag" #-}
text "writeStr" <> parens _operIpp
{-# LINE 1110 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 98, column 11)
_lhsOres =
({-# LINE 98 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_operIres
{-# LINE 1116 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_operOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1122 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _operIpp,_operIres) =
oper_ _operOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IGI :: Int ->
T_Instr
sem_Instr_IGI int_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
-- "src-ag/Language/EWE/PPProg.ag"(line 113, column 11)
_lhsOpp =
({-# LINE 113 "src-ag/Language/EWE/PPProg.ag" #-}
text "goto" <+> int int_
{-# LINE 1138 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 99, column 11)
_lhsOres =
({-# LINE 99 "src-ag/Language/EWE/CheckGrammar.ag" #-}
Right ()
{-# LINE 1144 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp,_lhsOres)))
sem_Instr_IGS :: String ->
T_Instr
sem_Instr_IGS string_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
-- "src-ag/Language/EWE/PPProg.ag"(line 114, column 11)
_lhsOpp =
({-# LINE 114 "src-ag/Language/EWE/PPProg.ag" #-}
text "goto" <+> text string_
{-# LINE 1158 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 100, column 11)
_lhsOres =
({-# LINE 100 "src-ag/Language/EWE/CheckGrammar.ag" #-}
isLabelDef string_ _lhsIlabelFound
{-# LINE 1164 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp,_lhsOres)))
sem_Instr_IFI :: T_MRef ->
T_Cond ->
T_MRef ->
Int ->
T_Instr
sem_Instr_IFI bcond_ cond_ then_ int_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_bcondOidMemRefDef :: ( Map.Map String Int )
_thenOidMemRefDef :: ( Map.Map String Int )
_bcondIpp :: Doc
_bcondIres :: ( Either String () )
_condIpp :: Doc
_thenIpp :: Doc
_thenIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 115, column 11)
_lhsOpp =
({-# LINE 115 "src-ag/Language/EWE/PPProg.ag" #-}
text "if" <+> _bcondIpp <+> _condIpp <+> _thenIpp
<+> text "then" <+> text "goto" <+> int int_
{-# LINE 1189 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 101, column 11)
_lhsOres =
({-# LINE 101 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_bcondIres <--> _thenIres
{-# LINE 1195 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_bcondOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1201 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_thenOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1207 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _bcondIpp,_bcondIres) =
bcond_ _bcondOidMemRefDef
( _condIpp) =
cond_
( _thenIpp,_thenIres) =
then_ _thenOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IFS :: T_MRef ->
T_Cond ->
T_MRef ->
String ->
T_Instr
sem_Instr_IFS bcond_ cond_ then_ string_ =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_bcondOidMemRefDef :: ( Map.Map String Int )
_thenOidMemRefDef :: ( Map.Map String Int )
_bcondIpp :: Doc
_bcondIres :: ( Either String () )
_condIpp :: Doc
_thenIpp :: Doc
_thenIres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 117, column 11)
_lhsOpp =
({-# LINE 117 "src-ag/Language/EWE/PPProg.ag" #-}
text "if" <+> _bcondIpp <+> _condIpp <+> _thenIpp
<+> text "then" <+> text "goto"
<+> text string_
{-# LINE 1239 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 102, column 11)
_lhsOres =
({-# LINE 102 "src-ag/Language/EWE/CheckGrammar.ag" #-}
isLabelDef string_ _lhsIlabelFound <--> _bcondIres <--> _thenIres
{-# LINE 1245 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_bcondOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1251 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_thenOidMemRefDef =
({-# LINE 42 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1257 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _bcondIpp,_bcondIres) =
bcond_ _bcondOidMemRefDef
( _condIpp) =
cond_
( _thenIpp,_thenIres) =
then_ _thenOidMemRefDef
in ( _lhsOpp,_lhsOres)))
sem_Instr_IH :: T_Instr
sem_Instr_IH =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
-- "src-ag/Language/EWE/PPProg.ag"(line 120, column 11)
_lhsOpp =
({-# LINE 120 "src-ag/Language/EWE/PPProg.ag" #-}
text "halt"
{-# LINE 1276 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 103, column 11)
_lhsOres =
({-# LINE 103 "src-ag/Language/EWE/CheckGrammar.ag" #-}
Right ()
{-# LINE 1282 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp,_lhsOres)))
sem_Instr_IB :: T_Instr
sem_Instr_IB =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
-- "src-ag/Language/EWE/PPProg.ag"(line 121, column 11)
_lhsOpp =
({-# LINE 121 "src-ag/Language/EWE/PPProg.ag" #-}
text "break"
{-# LINE 1295 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 104, column 11)
_lhsOres =
({-# LINE 104 "src-ag/Language/EWE/CheckGrammar.ag" #-}
Right ()
{-# LINE 1301 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp,_lhsOres)))
sem_Instr_INI :: T_Instr
sem_Instr_INI =
(\ _lhsIidMemRefDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
-- "src-ag/Language/EWE/PPProg.ag"(line 122, column 11)
_lhsOpp =
({-# LINE 122 "src-ag/Language/EWE/PPProg.ag" #-}
empty
{-# LINE 1314 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 105, column 11)
_lhsOres =
({-# LINE 105 "src-ag/Language/EWE/CheckGrammar.ag" #-}
Right ()
{-# LINE 1320 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp,_lhsOres)))
-- Labels ------------------------------------------------------
{-
visit 0:
chained attribute:
labelDef : Set.Set String
synthesized attributes:
copy : Labels
pp : Doc
res : Either String ()
alternatives:
alternative Cons:
child hd : {String}
child tl : Labels
visit 0:
local copy : _
alternative Nil:
visit 0:
local copy : _
-}
-- cata
sem_Labels :: Labels ->
T_Labels
sem_Labels list =
(Prelude.foldr sem_Labels_Cons sem_Labels_Nil list)
-- semantic domain
type T_Labels = ( Set.Set String ) ->
( Labels,( Set.Set String ),Doc,( Either String () ))
data Inh_Labels = Inh_Labels {labelDef_Inh_Labels :: ( Set.Set String )}
data Syn_Labels = Syn_Labels {copy_Syn_Labels :: Labels,labelDef_Syn_Labels :: ( Set.Set String ),pp_Syn_Labels :: Doc,res_Syn_Labels :: ( Either String () )}
wrap_Labels :: T_Labels ->
Inh_Labels ->
Syn_Labels
wrap_Labels sem (Inh_Labels _lhsIlabelDef) =
(let ( _lhsOcopy,_lhsOlabelDef,_lhsOpp,_lhsOres) = sem _lhsIlabelDef
in (Syn_Labels _lhsOcopy _lhsOlabelDef _lhsOpp _lhsOres))
sem_Labels_Cons :: String ->
T_Labels ->
T_Labels
sem_Labels_Cons hd_ tl_ =
(\ _lhsIlabelDef ->
(let _lhsOres :: ( Either String () )
_lhsOlabelDef :: ( Set.Set String )
_lhsOpp :: Doc
_lhsOcopy :: Labels
_tlOlabelDef :: ( Set.Set String )
_tlIcopy :: Labels
_tlIlabelDef :: ( Set.Set String )
_tlIpp :: Doc
_tlIres :: ( Either String () )
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 53, column 11)
_lhsOres =
({-# LINE 53 "src-ag/Language/EWE/CheckGrammar.ag" #-}
isLabelNotDef hd_ _tlIlabelDef
{-# LINE 1376 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 53, column 11)
_lhsOlabelDef =
({-# LINE 54 "src-ag/Language/EWE/CheckGrammar.ag" #-}
Set.insert hd_ _tlIlabelDef
{-# LINE 1382 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- use rule "src-ag/Language/EWE/PPProg.ag"(line 19, column 10)
_lhsOpp =
({-# LINE 19 "src-ag/Language/EWE/PPProg.ag" #-}
_tlIpp
{-# LINE 1388 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- self rule
_copy =
({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-}
(:) hd_ _tlIcopy
{-# LINE 1394 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- self rule
_lhsOcopy =
({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_copy
{-# LINE 1400 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_tlOlabelDef =
({-# LINE 38 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIlabelDef
{-# LINE 1406 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _tlIcopy,_tlIlabelDef,_tlIpp,_tlIres) =
tl_ _tlOlabelDef
in ( _lhsOcopy,_lhsOlabelDef,_lhsOpp,_lhsOres)))
sem_Labels_Nil :: T_Labels
sem_Labels_Nil =
(\ _lhsIlabelDef ->
(let _lhsOres :: ( Either String () )
_lhsOlabelDef :: ( Set.Set String )
_lhsOpp :: Doc
_lhsOcopy :: Labels
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 55, column 11)
_lhsOres =
({-# LINE 55 "src-ag/Language/EWE/CheckGrammar.ag" #-}
Right ()
{-# LINE 1422 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 55, column 11)
_lhsOlabelDef =
({-# LINE 56 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIlabelDef
{-# LINE 1428 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- use rule "src-ag/Language/EWE/PPProg.ag"(line 19, column 10)
_lhsOpp =
({-# LINE 19 "src-ag/Language/EWE/PPProg.ag" #-}
empty
{-# LINE 1434 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- self rule
_copy =
({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-}
[]
{-# LINE 1440 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- self rule
_lhsOcopy =
({-# LINE 39 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_copy
{-# LINE 1446 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOcopy,_lhsOlabelDef,_lhsOpp,_lhsOres)))
-- MRef --------------------------------------------------------
{-
visit 0:
inherited attribute:
idMemRefDef : Map.Map String Int
synthesized attributes:
pp : Doc
res : Either String ()
alternatives:
alternative MRefI:
child int : {Int}
alternative MRefId:
child string : {String}
-}
-- cata
sem_MRef :: MRef ->
T_MRef
sem_MRef (MRefI _int) =
(sem_MRef_MRefI _int)
sem_MRef (MRefId _string) =
(sem_MRef_MRefId _string)
-- semantic domain
type T_MRef = ( Map.Map String Int ) ->
( Doc,( Either String () ))
data Inh_MRef = Inh_MRef {idMemRefDef_Inh_MRef :: ( Map.Map String Int )}
data Syn_MRef = Syn_MRef {pp_Syn_MRef :: Doc,res_Syn_MRef :: ( Either String () )}
wrap_MRef :: T_MRef ->
Inh_MRef ->
Syn_MRef
wrap_MRef sem (Inh_MRef _lhsIidMemRefDef) =
(let ( _lhsOpp,_lhsOres) = sem _lhsIidMemRefDef
in (Syn_MRef _lhsOpp _lhsOres))
sem_MRef_MRefI :: Int ->
T_MRef
sem_MRef_MRefI int_ =
(\ _lhsIidMemRefDef ->
(let _lhsOpp :: Doc
_lhsOres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 34, column 12)
_lhsOpp =
({-# LINE 34 "src-ag/Language/EWE/PPProg.ag" #-}
text "M" <> brackets ( int int_ )
{-# LINE 1491 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 79, column 12)
_lhsOres =
({-# LINE 79 "src-ag/Language/EWE/CheckGrammar.ag" #-}
Right ()
{-# LINE 1497 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp,_lhsOres)))
sem_MRef_MRefId :: String ->
T_MRef
sem_MRef_MRefId string_ =
(\ _lhsIidMemRefDef ->
(let _lhsOpp :: Doc
_lhsOres :: ( Either String () )
-- "src-ag/Language/EWE/PPProg.ag"(line 35, column 12)
_lhsOpp =
({-# LINE 35 "src-ag/Language/EWE/PPProg.ag" #-}
text "M" <>
brackets (text string_)
{-# LINE 1511 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 80, column 12)
_lhsOres =
({-# LINE 80 "src-ag/Language/EWE/CheckGrammar.ag" #-}
isMemRefDef string_ _lhsIidMemRefDef
{-# LINE 1517 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOpp,_lhsOres)))
-- Prog --------------------------------------------------------
{-
visit 0:
synthesized attributes:
pp : Doc
res : Either String ()
alternatives:
alternative Prg:
child stms : Stmts
child equates : Equates
-}
-- cata
sem_Prog :: Prog ->
T_Prog
sem_Prog (Prg _stms _equates) =
(sem_Prog_Prg (sem_Stmts _stms) (sem_Equates _equates))
-- semantic domain
type T_Prog = ( Doc,(Either String ()))
data Inh_Prog = Inh_Prog {}
data Syn_Prog = Syn_Prog {pp_Syn_Prog :: Doc,res_Syn_Prog :: (Either String ())}
wrap_Prog :: T_Prog ->
Inh_Prog ->
Syn_Prog
wrap_Prog sem (Inh_Prog) =
(let ( _lhsOpp,_lhsOres) = sem
in (Syn_Prog _lhsOpp _lhsOres))
sem_Prog_Prg :: T_Stmts ->
T_Equates ->
T_Prog
sem_Prog_Prg stms_ equates_ =
(let _lhsOpp :: Doc
_stmsOlabelDef :: (Set.Set String)
_stmsOlabelFound :: (Set.Set String)
_stmsOidMemRefDef :: (Map.Map String Int)
_equatesOidMemRef :: (Map.Map String Int)
_lhsOres :: (Either String ())
_stmsIlabelDef :: (Set.Set String)
_stmsIpp :: Doc
_stmsIres :: (Either String ())
_equatesIidMemRef :: (Map.Map String Int)
_equatesIpp :: Doc
-- "src-ag/Language/EWE/PPProg.ag"(line 54, column 9)
_lhsOpp =
({-# LINE 54 "src-ag/Language/EWE/PPProg.ag" #-}
_stmsIpp $$ _equatesIpp
{-# LINE 1565 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 59, column 9)
_stmsOlabelDef =
({-# LINE 59 "src-ag/Language/EWE/CheckGrammar.ag" #-}
Set.empty
{-# LINE 1571 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 59, column 9)
_stmsOlabelFound =
({-# LINE 60 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_stmsIlabelDef
{-# LINE 1577 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 59, column 9)
_stmsOidMemRefDef =
({-# LINE 61 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_equatesIidMemRef
{-# LINE 1583 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 62, column 9)
_equatesOidMemRef =
({-# LINE 62 "src-ag/Language/EWE/CheckGrammar.ag" #-}
Map.empty
{-# LINE 1589 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (up)
_lhsOres =
({-# LINE 10 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_stmsIres
{-# LINE 1595 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _stmsIlabelDef,_stmsIpp,_stmsIres) =
stms_ _stmsOidMemRefDef _stmsOlabelDef _stmsOlabelFound
( _equatesIidMemRef,_equatesIpp) =
equates_ _equatesOidMemRef
in ( _lhsOpp,_lhsOres))
-- Stmt --------------------------------------------------------
{-
visit 0:
inherited attributes:
idMemRefDef : Map.Map String Int
labelFound : Set.Set String
chained attribute:
labelDef : Set.Set String
synthesized attributes:
pp : Doc
res : Either String ()
alternatives:
alternative Stmt:
child labels : Labels
child instr : Instr
visit 0:
local res1 : _
-}
-- cata
sem_Stmt :: Stmt ->
T_Stmt
sem_Stmt (Stmt _labels _instr) =
(sem_Stmt_Stmt (sem_Labels _labels) (sem_Instr _instr))
-- semantic domain
type T_Stmt = (Map.Map String Int) ->
(Set.Set String) ->
(Set.Set String) ->
( (Set.Set String),Doc,(Either String ()))
data Inh_Stmt = Inh_Stmt {idMemRefDef_Inh_Stmt :: (Map.Map String Int),labelDef_Inh_Stmt :: (Set.Set String),labelFound_Inh_Stmt :: (Set.Set String)}
data Syn_Stmt = Syn_Stmt {labelDef_Syn_Stmt :: (Set.Set String),pp_Syn_Stmt :: Doc,res_Syn_Stmt :: (Either String ())}
wrap_Stmt :: T_Stmt ->
Inh_Stmt ->
Syn_Stmt
wrap_Stmt sem (Inh_Stmt _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound) =
(let ( _lhsOlabelDef,_lhsOpp,_lhsOres) = sem _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound
in (Syn_Stmt _lhsOlabelDef _lhsOpp _lhsOres))
sem_Stmt_Stmt :: T_Labels ->
T_Instr ->
T_Stmt
sem_Stmt_Stmt labels_ instr_ =
(\ _lhsIidMemRefDef
_lhsIlabelDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_lhsOlabelDef :: (Set.Set String)
_labelsOlabelDef :: ( Set.Set String )
_instrOidMemRefDef :: (Map.Map String Int)
_instrOlabelFound :: (Set.Set String)
_labelsIcopy :: Labels
_labelsIlabelDef :: ( Set.Set String )
_labelsIpp :: Doc
_labelsIres :: ( Either String () )
_instrIpp :: Doc
_instrIres :: (Either String ())
-- "src-ag/Language/EWE/PPProg.ag"(line 51, column 10)
_lhsOpp =
({-# LINE 51 "src-ag/Language/EWE/PPProg.ag" #-}
_labelsIpp $$ _instrIpp
{-# LINE 1661 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 65, column 10)
_res1 =
({-# LINE 65 "src-ag/Language/EWE/CheckGrammar.ag" #-}
let f (e,er,s) lbl = if Set.member lbl s
then (True,
lbl ++ " is already defined\n" ++ er,
s)
else (e, er, Set.insert lbl s)
(e', errs', set') = foldl f (False,"",_lhsIlabelDef) _labelsIcopy
in if e'
then Left errs'
else Right ()
{-# LINE 1675 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- "src-ag/Language/EWE/CheckGrammar.ag"(line 76, column 11)
_lhsOres =
({-# LINE 76 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_res1 <--> _instrIres
{-# LINE 1681 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (up)
_lhsOlabelDef =
({-# LINE 26 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_labelsIlabelDef
{-# LINE 1687 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_labelsOlabelDef =
({-# LINE 38 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIlabelDef
{-# LINE 1693 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_instrOidMemRefDef =
({-# LINE 33 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1699 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_instrOlabelFound =
({-# LINE 32 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIlabelFound
{-# LINE 1705 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _labelsIcopy,_labelsIlabelDef,_labelsIpp,_labelsIres) =
labels_ _labelsOlabelDef
( _instrIpp,_instrIres) =
instr_ _instrOidMemRefDef _instrOlabelFound
in ( _lhsOlabelDef,_lhsOpp,_lhsOres)))
-- Stmts -------------------------------------------------------
{-
visit 0:
inherited attributes:
idMemRefDef : Map.Map String Int
labelFound : Set.Set String
chained attribute:
labelDef : Set.Set String
synthesized attributes:
pp : Doc
res : Either String ()
alternatives:
alternative Cons:
child hd : Stmt
child tl : Stmts
alternative Nil:
-}
-- cata
sem_Stmts :: Stmts ->
T_Stmts
sem_Stmts list =
(Prelude.foldr sem_Stmts_Cons sem_Stmts_Nil (Prelude.map sem_Stmt list))
-- semantic domain
type T_Stmts = (Map.Map String Int) ->
(Set.Set String) ->
(Set.Set String) ->
( (Set.Set String),Doc,(Either String ()))
data Inh_Stmts = Inh_Stmts {idMemRefDef_Inh_Stmts :: (Map.Map String Int),labelDef_Inh_Stmts :: (Set.Set String),labelFound_Inh_Stmts :: (Set.Set String)}
data Syn_Stmts = Syn_Stmts {labelDef_Syn_Stmts :: (Set.Set String),pp_Syn_Stmts :: Doc,res_Syn_Stmts :: (Either String ())}
wrap_Stmts :: T_Stmts ->
Inh_Stmts ->
Syn_Stmts
wrap_Stmts sem (Inh_Stmts _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound) =
(let ( _lhsOlabelDef,_lhsOpp,_lhsOres) = sem _lhsIidMemRefDef _lhsIlabelDef _lhsIlabelFound
in (Syn_Stmts _lhsOlabelDef _lhsOpp _lhsOres))
sem_Stmts_Cons :: T_Stmt ->
T_Stmts ->
T_Stmts
sem_Stmts_Cons hd_ tl_ =
(\ _lhsIidMemRefDef
_lhsIlabelDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_lhsOlabelDef :: (Set.Set String)
_hdOidMemRefDef :: (Map.Map String Int)
_hdOlabelDef :: (Set.Set String)
_hdOlabelFound :: (Set.Set String)
_tlOidMemRefDef :: (Map.Map String Int)
_tlOlabelDef :: (Set.Set String)
_tlOlabelFound :: (Set.Set String)
_hdIlabelDef :: (Set.Set String)
_hdIpp :: Doc
_hdIres :: (Either String ())
_tlIlabelDef :: (Set.Set String)
_tlIpp :: Doc
_tlIres :: (Either String ())
-- use rule "src-ag/Language/EWE/PPProg.ag"(line 25, column 10)
_lhsOpp =
({-# LINE 25 "src-ag/Language/EWE/PPProg.ag" #-}
(($$) _hdIpp _tlIpp)
{-# LINE 1773 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- use rule "src-ag/Language/EWE/CheckGrammar.ag"(line 23, column 12)
_lhsOres =
({-# LINE 23 "src-ag/Language/EWE/CheckGrammar.ag" #-}
((<-->) _hdIres _tlIres)
{-# LINE 1779 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (up)
_lhsOlabelDef =
({-# LINE 20 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_tlIlabelDef
{-# LINE 1785 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_hdOidMemRefDef =
({-# LINE 28 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1791 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_hdOlabelDef =
({-# LINE 26 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIlabelDef
{-# LINE 1797 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_hdOlabelFound =
({-# LINE 27 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIlabelFound
{-# LINE 1803 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_tlOidMemRefDef =
({-# LINE 22 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIidMemRefDef
{-# LINE 1809 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (chain)
_tlOlabelDef =
({-# LINE 20 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_hdIlabelDef
{-# LINE 1815 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (down)
_tlOlabelFound =
({-# LINE 21 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIlabelFound
{-# LINE 1821 "src/Language/EWE/CheckGrammar.hs" #-}
)
( _hdIlabelDef,_hdIpp,_hdIres) =
hd_ _hdOidMemRefDef _hdOlabelDef _hdOlabelFound
( _tlIlabelDef,_tlIpp,_tlIres) =
tl_ _tlOidMemRefDef _tlOlabelDef _tlOlabelFound
in ( _lhsOlabelDef,_lhsOpp,_lhsOres)))
sem_Stmts_Nil :: T_Stmts
sem_Stmts_Nil =
(\ _lhsIidMemRefDef
_lhsIlabelDef
_lhsIlabelFound ->
(let _lhsOpp :: Doc
_lhsOres :: (Either String ())
_lhsOlabelDef :: (Set.Set String)
-- use rule "src-ag/Language/EWE/PPProg.ag"(line 25, column 10)
_lhsOpp =
({-# LINE 25 "src-ag/Language/EWE/PPProg.ag" #-}
empty
{-# LINE 1840 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- use rule "src-ag/Language/EWE/CheckGrammar.ag"(line 23, column 12)
_lhsOres =
({-# LINE 23 "src-ag/Language/EWE/CheckGrammar.ag" #-}
Right ()
{-# LINE 1846 "src/Language/EWE/CheckGrammar.hs" #-}
)
-- copy rule (chain)
_lhsOlabelDef =
({-# LINE 20 "src-ag/Language/EWE/CheckGrammar.ag" #-}
_lhsIlabelDef
{-# LINE 1852 "src/Language/EWE/CheckGrammar.hs" #-}
)
in ( _lhsOlabelDef,_lhsOpp,_lhsOres)))