From 0850f0a8d66af028e32a79063cdad328b70db909 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Fri, 11 Oct 2024 16:14:01 +0200 Subject: Implement if statements with equality --- lib/Language/Elna/Backend/Intermediate.hs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'lib/Language/Elna/Backend/Intermediate.hs') 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) -- cgit v1.2.3