summaryrefslogtreecommitdiff
path: root/compiler.hs
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2017-12-13 22:18:43 +0100
committertomsmeding <tom.smeding@gmail.com>2017-12-13 22:18:43 +0100
commit3fca4bf68ff8df1639416f0630452272c647cd00 (patch)
tree6f85fbacbe99611affa5ff6025da1530e40a160a /compiler.hs
parent897fb17dd6a045a7056e6d6babbbb24748f698f6 (diff)
Datas
Diffstat (limited to 'compiler.hs')
-rw-r--r--compiler.hs9
1 files changed, 6 insertions, 3 deletions
diff --git a/compiler.hs b/compiler.hs
index d63f7bf..64b887c 100644
--- a/compiler.hs
+++ b/compiler.hs
@@ -4,10 +4,8 @@ module Compiler(IRProgram, compileProgram) where
import Control.Monad.Except
import Control.Monad.State.Strict
import Data.List
-import Data.Maybe
import qualified Data.Map.Strict as Map
import qualified Data.Set as Set
-import Debug.Trace
import AST
import Intermediate
@@ -220,11 +218,16 @@ genTValue (TVString s) nextnext = do
addIns (r, IData i)
setTerm $ IJmp nextnext
return r
+genTValue (TVQuoted v) nextnext = do
+ i <- dataTableAdd v
+ r <- genTemp
+ addIns (r, IData i)
+ setTerm $ IJmp nextnext
+ return r
genTValue (TVDefine name value) nextnext = do
dref <- genTemp
defineAdd name dref
vref <- genTValue value nextnext
- -- traceShowM ("tvdefine_refs", dref, vref, name, value)
addIns (dref, IAssign vref)
return RNone
genTValue (TVLambda args body closure) nextnext = do