diff options
Diffstat (limited to 'assignment-13/uFPL/Sim.dcl')
-rw-r--r-- | assignment-13/uFPL/Sim.dcl | 50 |
1 files changed, 9 insertions, 41 deletions
diff --git a/assignment-13/uFPL/Sim.dcl b/assignment-13/uFPL/Sim.dcl index 36e4e73..f30e107 100644 --- a/assignment-13/uFPL/Sim.dcl +++ b/assignment-13/uFPL/Sim.dcl @@ -19,45 +19,16 @@ class unlift a b :: b -> a :: ReadOrWrite = ReadOnly | ReadWrite -:: ISharedInt = - { iisname :: String - , iisinit :: Int - , iisrw :: ReadOrWrite - } - -:: ISharedUInt = - { iuisname :: String - , iuisinit :: Int - , iuisrw :: ReadOrWrite - } - -:: ISharedLong = - { ilsname :: String - , ilsinit :: Int - , ilsrw :: ReadOrWrite - } - -:: ISharedULong = - { iulsname :: String - , iulsinit :: Int - , iulsrw :: ReadOrWrite - } - -:: ISharedBool = - { ibsname :: String - , ibsinit :: Bool - , ibsrw :: ReadOrWrite - } +:: IShared + = ISharedInt String Int ReadOrWrite + | ISharedUInt String Int ReadOrWrite + | ISharedLong String Int ReadOrWrite + | ISharedULong String Int ReadOrWrite + | ISharedBool String Bool ReadOrWrite :: ISharedRef :== String -:: IShares = - { ishares :: [ISharedInt] - , uishares :: [ISharedUInt] - , lshares :: [ISharedLong] - , ulshares :: [ISharedULong] - , bshares :: [ISharedBool] - } +:: IShares :== [IShared] :: IExpr = ILitInt Int @@ -97,16 +68,13 @@ class unlift a b :: b -> a , bsvalues :: Map String Bool } -derive class iTask Signedness, CType, ReadOrWrite, ISharedInt, ISharedUInt, - ISharedLong, ISharedULong, ISharedBool, IShares, IExpr, ITrigger, IRule, - INamedRule, IState +derive class iTask Signedness, CType, ReadOrWrite, IShared, IExpr, ITrigger, + IRule, INamedRule, IState instance lift [a] | lift a instance unlift [a] [b] | unlift a b instance lift IExpr instance unlift IExpr (Expr t rw) | Expr t -instance lift ISharedInt -instance unlift ISharedInt (UShared Int rw) instance lift ITrigger instance unlift ITrigger Trigger instance lift IRule |