summaryrefslogtreecommitdiff
path: root/lib/Language/Elna/Backend/Intermediate.hs
diff options
context:
space:
mode:
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)