summaryrefslogtreecommitdiff
path: root/app/Frontend.hs
diff options
context:
space:
mode:
authorMirek Kratochvil <exa.exa@gmail.com>2022-11-11 22:10:26 +0100
committerMirek Kratochvil <exa.exa@gmail.com>2022-11-11 22:10:26 +0100
commitfe6666d204c0728b4556574ddc184bc46013b193 (patch)
treef0e33f3d379ce562c02620660ebdbd1fcb870fe7 /app/Frontend.hs
parent5d186de9c8483b4de749459fda9c507c68f8fa73 (diff)
downloadprlg-fe6666d204c0728b4556574ddc184bc46013b193.tar.gz
prlg-fe6666d204c0728b4556574ddc184bc46013b193.tar.bz2
looks like vars work
Diffstat (limited to 'app/Frontend.hs')
-rw-r--r--app/Frontend.hs14
1 files changed, 10 insertions, 4 deletions
diff --git a/app/Frontend.hs b/app/Frontend.hs
index 2be4f68..2c92e1f 100644
--- a/app/Frontend.hs
+++ b/app/Frontend.hs
@@ -66,7 +66,8 @@ interpret = (>> return True) . lex
Left err -> liftIO $ putStrLn $ "expression parsing: " ++ err
Right prlg -> intern prlg
intern prlgs = do
- prlgi <- withStrTable $ flip C.strtablizePrlg prlgs
+ prlgi <-
+ withStrTable $ \st -> C.strtablizePrlg (C.varnames prlgs) st prlgs
compile prlgi
compile prlgi
{- TODO: switch between prove goal/compile clause here -}
@@ -93,18 +94,23 @@ addBuiltins = do
c <- findAtom "c"
b0 <- findStruct "b" 0
any <- findStruct "any" 1
+ eq <- findStruct "=" 2
modify $ \s ->
s
{ defs =
M.fromList
- [ (a1, [[I.U (I.Atom a), I.NoGoal], [I.U (I.Atom b), I.NoGoal]])
+ [ (eq, [[I.U (I.LocalRef 0),I.U (I.LocalRef 0), I.NoGoal]])
+ , (a1, [[I.U (I.Atom a), I.NoGoal], [I.U (I.Atom b), I.NoGoal]])
, ( b0
, [ [I.Goal, I.U (I.Struct a1), I.U (I.Atom c), I.LastCall]
, [I.Goal, I.U (I.Struct a1), I.U (I.Atom b), I.LastCall]
])
- , (any, [[I.U I.VoidVar, I.NoGoal]])
+ , (any, [[I.U I.VoidRef, I.NoGoal]])
]
- , ops = [(",", P.Op 1000 $ P.Infix P.X P.Y)]
+ , ops =
+ [ (",", P.Op 1000 $ P.Infix P.X P.Y)
+ , ("=", P.Op 700 $ P.Infix P.X P.X)
+ ]
}
interpreterStart :: PrlgEnv ()