diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-08-12 21:00:52 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-08-12 21:00:52 +0200 |
| commit | f78592378a815bcc2dfabac4538c1ce612d4878d (patch) | |
| tree | 9c4b09e2978b8d84c06482ae3a5a857f27ae4a02 /lib | |
| parent | 38a8d6811c302897e3f48f15be1576634f1e3293 (diff) | |
| download | elna-f78592378a815bcc2dfabac4538c1ce612d4878d.tar.gz | |
Add IR quadruple definitions
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Language/Elna/Intermediate.hs | 44 |
1 files changed, 44 insertions, 0 deletions
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) |
