summaryrefslogtreecommitdiff
path: root/lib/Language/Elna/Intermediate.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2024-09-08 02:08:13 +0200
committerEugen Wissner <belka@caraus.de>2024-09-08 02:08:13 +0200
commit1cbbef19afcf997315431e3aa45f824fe8a8a0e7 (patch)
tree8813df9aab3185a9c2b778499ecb041a6c58cead /lib/Language/Elna/Intermediate.hs
parenta625bbff505c912f8a19f62bcb92313a63c60ed4 (diff)
downloadelna-1cbbef19afcf997315431e3aa45f824fe8a8a0e7.tar.gz
Stub the implementation for all phases
Diffstat (limited to 'lib/Language/Elna/Intermediate.hs')
-rw-r--r--lib/Language/Elna/Intermediate.hs35
1 files changed, 21 insertions, 14 deletions
diff --git a/lib/Language/Elna/Intermediate.hs b/lib/Language/Elna/Intermediate.hs
index 4e23fd9..d334661 100644
--- a/lib/Language/Elna/Intermediate.hs
+++ b/lib/Language/Elna/Intermediate.hs
@@ -1,11 +1,28 @@
module Language.Elna.Intermediate
- ( Label(..)
+ ( Quadruple(..)
+ {- , Label(..)
, Operand(..)
- , Quadruple(..)
- , Variable(..)
+ , Variable(..) -}
, intermediate
) where
+import Data.Vector (Vector)
+import qualified Data.Vector as Vector
+import qualified Language.Elna.AST as AST
+import Language.Elna.SymbolTable (SymbolTable{-, Info(..) -})
+
+data Quadruple
+ = StartQuadruple
+ | StopQuadruple
+ deriving (Eq, Show)
+
+intermediate :: SymbolTable -> AST.Program -> {- HashMap AST.Identifier (-} Vector Quadruple --)
+intermediate _globalTable = const $ Vector.fromList [StartQuadruple, StopQuadruple]
+ {- = fst
+ . flip runState mempty
+ . runIntermediate
+ . program globalTable -}
+{-
import Control.Monad.Trans.State (State, runState, gets, modify')
import Data.Bifunctor (Bifunctor(..))
import Data.Int (Int32)
@@ -13,11 +30,7 @@ import Data.HashMap.Strict (HashMap)
import qualified Data.HashMap.Strict as HashMap
import Data.Text (Text)
import Data.Word (Word32)
-import Data.Vector (Vector)
-import qualified Data.Vector as Vector
-import qualified Language.Elna.AST as AST
import Language.Elna.Types (Type(..))
-import Language.Elna.SymbolTable (SymbolTable, Info(..))
import qualified Language.Elna.SymbolTable as SymbolTable
import Data.Foldable (Foldable(..), foldrM)
import GHC.Records (HasField(..))
@@ -129,13 +142,6 @@ createTemporary = do
{ temporaryCounter = getField @"temporaryCounter" generator + 1
}
-intermediate :: SymbolTable -> AST.Program -> HashMap AST.Identifier (Vector Quadruple)
-intermediate globalTable
- = fst
- . flip runState mempty
- . runIntermediate
- . program globalTable
-
program
:: SymbolTable
-> AST.Program
@@ -326,3 +332,4 @@ literal (AST.CharacterLiteral character) = IntOperand $ fromIntegral character
literal (AST.BooleanLiteral boolean)
| boolean = IntOperand 1
| otherwise = IntOperand 0
+-}