diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-10-11 16:14:01 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-10-11 16:14:01 +0200 |
| commit | 0850f0a8d66af028e32a79063cdad328b70db909 (patch) | |
| tree | 8c1fa49d5476e706e94a7af62ce37b12ef65e32d /lib/Language/Elna/Backend/Intermediate.hs | |
| parent | 87f183baad01f2b572f5f9051895b5876a56dd4c (diff) | |
| download | elna-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.hs | 20 |
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) |
