diff options
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) |
