diff options
Diffstat (limited to 'lib/Language/Elna/Backend/Intermediate.hs')
| -rw-r--r-- | lib/Language/Elna/Backend/Intermediate.hs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/Language/Elna/Backend/Intermediate.hs b/lib/Language/Elna/Backend/Intermediate.hs new file mode 100644 index 0000000..01a026b --- /dev/null +++ b/lib/Language/Elna/Backend/Intermediate.hs @@ -0,0 +1,46 @@ +module Language.Elna.Backend.Intermediate + ( Operand(..) + , Quadruple(..) + {- , Label(..) -} + , Variable(..) + ) where + +import Data.Int (Int32) +import Data.Word (Word32) +import Data.Text (Text) + +newtype Variable = TempVariable Word32 -- | Variable Text + deriving Eq + +instance Show Variable + where + -- show (Variable variable) = '$' : Text.unpack variable + show (TempVariable variable) = '$' : show variable + +data Operand v + = IntOperand Int32 + | VariableOperand v + deriving (Eq, Show) + +data Quadruple v + = StartQuadruple + | StopQuadruple + | ParameterQuadruple (Operand v) + | CallQuadruple Text Word32 + | AddQuadruple (Operand v) (Operand v) v + | SubtractionQuadruple (Operand v) (Operand v) v + | NegationQuadruple (Operand v) v + {-| GoToQuadruple Label + | AssignQuadruple Operand Variable + | ArrayQuadruple Variable Operand Variable + | ArrayAssignQuadruple Operand Operand Variable + | ProductQuadruple Operand Operand Variable + | DivisionQuadruple 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 -} + deriving (Eq, Show) |
