Add IR quadruple definitions
This commit is contained in:
44
lib/Language/Elna/Intermediate.hs
Normal file
44
lib/Language/Elna/Intermediate.hs
Normal file
@ -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)
|
Reference in New Issue
Block a user