crafting-interpreters-hs/app/Main.hs
2025-12-30 01:27:01 +03:00

20 lines
737 B
Haskell

import Lox.Scanner
import Lox.Parser
import Lox.Interpreter
import System.IO
run :: String -> IO ()
run source = do
let tokensMaybe = scanTokensFromSource source
case tokensMaybe of
Left UnexpectedCharacterError -> putStrLn "Unexpected character"
Right tokens -> do
let stmtMaybe = parse tokens
case stmtMaybe of
Left ExpectedExpressionError -> putStrLn "Expected expression"
Left MismatchedParenthesesError -> putStrLn "Mismatched parentheses"
Left ExpectedSemicolonError -> putStrLn "Expected semicolon"
Right statements -> runStatements statements
main :: IO ()
main = putStr ">> " >> hFlush stdout >> getLine >>= run