summaryrefslogtreecommitdiff
path: root/lib/Language/Elna/Backend/Intermediate.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2024-10-11 16:14:01 +0200
committerEugen Wissner <belka@caraus.de>2024-10-11 16:14:01 +0200
commit0850f0a8d66af028e32a79063cdad328b70db909 (patch)
tree8c1fa49d5476e706e94a7af62ce37b12ef65e32d /lib/Language/Elna/Backend/Intermediate.hs
parent87f183baad01f2b572f5f9051895b5876a56dd4c (diff)
downloadelna-0850f0a8d66af028e32a79063cdad328b70db909.tar.gz
Implement if statements with equality
Diffstat (limited to 'lib/Language/Elna/Backend/Intermediate.hs')
-rw-r--r--lib/Language/Elna/Backend/Intermediate.hs20
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/Language/Elna/Backend/Intermediate.hs b/lib/Language/Elna/Backend/Intermediate.hs
index 380fba7..6d3a1af 100644
--- a/lib/Language/Elna/Backend/Intermediate.hs
+++ b/lib/Language/Elna/Backend/Intermediate.hs
@@ -1,13 +1,21 @@
module Language.Elna.Backend.Intermediate
( Operand(..)
, Quadruple(..)
- {- , Label(..) -}
+ , Label(..)
, Variable(..)
) where
import Data.Int (Int32)
import Data.Word (Word32)
import Data.Text (Text)
+import qualified Data.Text as Text
+
+newtype Label = Label { unLabel :: Text }
+ deriving Eq
+
+instance Show Label
+ where
+ show (Label label) = '.' : Text.unpack label
newtype Variable = TempVariable Word32 -- | Variable Text
deriving Eq
@@ -32,15 +40,15 @@ data Quadruple v
| NegationQuadruple (Operand v) v
| ProductQuadruple (Operand v) (Operand v) v
| DivisionQuadruple (Operand v) (Operand v) v
- {-| GoToQuadruple Label
- | AssignQuadruple Operand Variable
+ | GoToQuadruple Label
+ {-| AssignQuadruple Operand Variable
| ArrayQuadruple Variable Operand Variable
| ArrayAssignQuadruple Operand Operand Variable
- | EqualQuadruple Operand Operand Label
| NonEqualQuadruple Operand Operand Label
| LessQuadruple Operand Operand Label
| GreaterQuadruple Operand Operand Label
| LessOrEqualQuadruple Operand Operand Label
- | GreaterOrEqualQuadruple Operand Operand Label
- | LabelQuadruple Label -}
+ | GreaterOrEqualQuadruple Operand Operand Label -}
+ | EqualQuadruple (Operand v) (Operand v) Label
+ | LabelQuadruple Label
deriving (Eq, Show)