Resolves issue with parsing comments

This commit is contained in:
2024-12-29 20:29:41 -06:00
committed by James Eversole
parent 8a2dc2dfcf
commit bde89125ba
7 changed files with 82 additions and 69 deletions

View File

@ -5,10 +5,12 @@ import Lexer
import Parser
import Research
import Control.Exception (SomeException, catch)
import Control.Monad.IO.Class (liftIO)
import Data.List (intercalate)
import qualified Data.Map as Map
import System.Console.Haskeline
import System.IO (hFlush, stdout)
import qualified Data.Map as Map
repl :: Map.Map String T -> IO ()
repl env = runInputT defaultSettings (loop env)
@ -23,15 +25,25 @@ repl env = runInputT defaultSettings (loop env)
outputStrLn ""
loop env
Just input -> do
let clearEnv = Map.delete "__result" env
newEnv = evalSingle clearEnv (parseSingle input)
case Map.lookup "__result" newEnv of
Just r -> do
outputStrLn $ "tricu > " ++ show r
outputStrLn $ "DECODE -: \"" ++ decodeResult r ++ "\""
Nothing -> return ()
newEnv <- liftIO $ (processInput env input `catch` errorHandler env)
loop newEnv
processInput :: Map.Map String T -> String -> IO (Map.Map String T)
processInput env input = do
let clearEnv = Map.delete "__result" env
newEnv = evalSingle clearEnv (parseSingle input)
case Map.lookup "__result" newEnv of
Just r -> do
putStrLn $ "tricu > " ++ show r
putStrLn $ "READ -: \"" ++ decodeResult r ++ "\""
Nothing -> return ()
return newEnv
errorHandler :: Map.Map String T -> SomeException -> IO (Map.Map String T)
errorHandler env e = do
putStrLn $ "Error: " ++ show e
return env
decodeResult :: T -> String
decodeResult tc = case toNumber tc of
Right num -> show num