diff options
Diffstat (limited to 'lib/Language/Elna/Intermediate.hs')
| -rw-r--r-- | lib/Language/Elna/Intermediate.hs | 35 |
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 +-} |
