diff options
| author | Mirek Kratochvil <exa.exa@gmail.com> | 2022-11-11 22:10:26 +0100 |
|---|---|---|
| committer | Mirek Kratochvil <exa.exa@gmail.com> | 2022-11-11 22:10:26 +0100 |
| commit | fe6666d204c0728b4556574ddc184bc46013b193 (patch) | |
| tree | f0e33f3d379ce562c02620660ebdbd1fcb870fe7 /app/Frontend.hs | |
| parent | 5d186de9c8483b4de749459fda9c507c68f8fa73 (diff) | |
| download | prlg-fe6666d204c0728b4556574ddc184bc46013b193.tar.gz prlg-fe6666d204c0728b4556574ddc184bc46013b193.tar.bz2 | |
looks like vars work
Diffstat (limited to 'app/Frontend.hs')
| -rw-r--r-- | app/Frontend.hs | 14 |
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 () |
