summaryrefslogtreecommitdiff
path: root/assignment-13/ufpl.dcl
diff options
context:
space:
mode:
authorCamil Staps2018-01-03 09:24:21 +0100
committerCamil Staps2018-01-03 09:24:21 +0100
commit33db1946d2a09898761b7d397fe4028725f2215b (patch)
tree1f68cb8b276b7a20f42f325c76e6d4853ea8e68f /assignment-13/ufpl.dcl
parentCleanup (diff)
Rename & restructure
Diffstat (limited to 'assignment-13/ufpl.dcl')
-rw-r--r--assignment-13/ufpl.dcl97
1 files changed, 0 insertions, 97 deletions
diff --git a/assignment-13/ufpl.dcl b/assignment-13/ufpl.dcl
deleted file mode 100644
index 9f1036f..0000000
--- a/assignment-13/ufpl.dcl
+++ /dev/null
@@ -1,97 +0,0 @@
-definition module ufpl
-
-from StdGeneric import :: Bimap
-from StdOverloaded import class +, class -, class *, class /, class ==, class <
-
-from C import :: CType, :: CExpr, :: CBody, :: CVar, :: CFun, :: CProg
-
-:: RO = RO
-:: RW = RW
-
-:: Shared t w =
- { sname :: String
- , stype :: CType
- , sinit :: t
- , srepr :: Bimap t CExpr
- }
-
-:: Shares
- = NoShares
- | E.t rw: Shares (Shared t rw) Shares
-
-removeDupShares :: Shares -> Shares
-
-class allShares t
-where
- allShares` :: t -> Shares
-
- allShares :: t -> Shares
- allShares x :== removeDupShares (allShares` x)
-
-instance allShares [t] | allShares t
-instance allShares (Expr t rw)
-instance allShares Trigger
-instance allShares Rule
-instance allShares NamedRule
-
-class Expr t where litExpr :: t -> CExpr
-instance Expr Int
-instance Expr Bool
-instance Expr Char
-
-:: Expr t rw
- = ELit t
- | EShared (Shared t rw)
- | E.rwa rwb: (+.) infixl 6 (Expr t rwa) (Expr t rwb) & + t
- | E.rwa rwb: (-.) infixl 6 (Expr t rwa) (Expr t rwb) & - t
- | E.rwa rwb: (*.) infixl 7 (Expr t rwa) (Expr t rwb) & * t
- | E.rwa rwb: (/.) infixl 7 (Expr t rwa) (Expr t rwb) & / t
- | E.rwa rwb u: EEq (Bimap t Bool) (Expr u rwa) (Expr u rwb) & Expr, == u
- | E.rwa rwb u: ELt (Bimap t Bool) (Expr u rwa) (Expr u rwb) & Expr, < u
- | E.rwa rwb: EAnd (Bimap t Bool) (Expr Bool rwa) (Expr Bool rwb)
- | E.rwa rwb: EOr (Bimap t Bool) (Expr Bool rwa) (Expr Bool rwb)
- | E.rwa rwb rwc: EIf (Expr Bool rwa) (Expr t rwb) (Expr t rwc)
-
-lit :: (t -> Expr t RO)
-(?) infix 4 :: (Expr Bool rwa) (Expr t rwb, Expr t rwc) -> Expr t RO
-
-(==.) infix 4 :: (Expr t rwa) (Expr t rwb) -> Expr Bool RO | Expr, == t
-(<.) infix 4 :: (Expr t rwa) (Expr t rwb) -> Expr Bool RO | Expr, < t
-(>.) infix 4 :: (Expr t rwa) (Expr t rwb) -> Expr Bool RO | Expr, < t
-
-(&&.) infixr 3 :: (Expr Bool rwa) (Expr Bool rwb) -> Expr Bool RO
-(||.) infixr 4 :: (Expr Bool rwa) (Expr Bool rwb) -> Expr Bool RO
-
-:: Trigger
- = E.t rw: Change (Expr t rw) & Expr t
- | E.t rwa rwb: (?=) (Expr t rwa) (Expr t rwb) & Expr, == t
- | (?&) infixr 3 Trigger Trigger
- | (?|) infixr 4 Trigger Trigger
-
-:: Rule
- = E.t rw: (<#) infix 3 (Expr t RW) (Expr t rw) & Expr t
- | E.rw: When (Expr Bool rw) [Rule]
- | (>>>) infixr 2 Trigger [Rule]
- | E.rwa rwb: SetCursor (Expr Int rwa, Expr Int rwb)
- | E.t rw: Print (Expr t rw) & Expr t
-
-:: NamedRule = E.r: (:=:) infix 1 String r & gen r CBody & allShares r
-
-class gen f t :: f -> t
-
-class (:.) infixr 2 r :: Rule r -> [Rule]
-instance :. Rule
-instance :. [Rule]
-
-class (|||) infixr 0 r :: NamedRule r -> [NamedRule]
-instance ||| NamedRule
-instance ||| [NamedRule]
-
-instance gen (Expr t rw) CExpr | Expr t
-instance gen (Shared t rw) CVar
-instance gen Trigger CExpr
-instance gen Rule CBody
-instance gen [r] CBody | gen r CBody
-instance gen NamedRule CFun
-instance gen NamedRule CProg
-instance gen [NamedRule] CProg