From f78592378a815bcc2dfabac4538c1ce612d4878d Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Mon, 12 Aug 2024 21:00:52 +0200 Subject: Add IR quadruple definitions --- lib/Language/Elna/Intermediate.hs | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lib/Language/Elna/Intermediate.hs (limited to 'lib/Language/Elna') diff --git a/lib/Language/Elna/Intermediate.hs b/lib/Language/Elna/Intermediate.hs new file mode 100644 index 0000000..8c4fec8 --- /dev/null +++ b/lib/Language/Elna/Intermediate.hs @@ -0,0 +1,44 @@ +module Language.Elna.Intermediate + ( Label(..) + , Operand(..) + , Quadruple(..) + , Variable(..) + ) where + +import Data.Int (Int32) +import Data.Word (Word32) +import Data.Text (Text) + +data Operand + = VariableOperand Text + | IntOperand Int32 + deriving (Eq, Show) + +newtype Label = Label Text + deriving (Eq, Show) + +newtype Variable = Variable Text + deriving (Eq, Show) + +data Quadruple + = StartQuadruple + | GoToQuadruple Label + | AssignQuadruple Operand Variable + | ArrayQuadruple Variable Word32 Variable + | ArrayAssignQuadruple Operand Word32 Variable + | AddQuadruple Operand Operand Variable + | SubtractionQuadruple Operand Operand Variable + | ProductQuadruple Operand Operand Variable + | DivisionQuadruple Operand Operand Variable + | NegationQuadruple 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 + | ParameterQuadruple Operand + | CallQuadruple Variable Word32 + | StopQuadruple + deriving (Eq, Show) -- cgit v1.2.3