module CsoundExpr.Translator.Instr
(toInstr, toOpcodeExpr)
where
import qualified Data.Map as Map
import CsoundExpr.Translator.ExprTree.TreeSeq
import qualified CsoundExpr.Translator.Cs.CsTree as La
import qualified CsoundExpr.Translator.Cs.CsoundFile as Cs
import CsoundExpr.Translator.Types
import CsoundExpr.Translator.AssignmentElimination
import CsoundExpr.Translator.MultiOutsFolding
toInstr :: (Id, Instr) -> Cs.Instr
toInstr (id, x) = Cs.Instr id $ toOpcodeExpr x
toOpcodeExpr :: Instr -> [Cs.OpcodeExpr]
toOpcodeExpr = foldMultiOuts . eliminateAssignment .
reduceAdjLists . adjLists 0