packages feed

yapb-0.1.0: app/parser/Main.hs

module Main where

import CommonParserUtil

import Lexer
import Terminal
import Parser
import Expr

import System.IO

main :: IO ()
main = do
  fileName <- readline "Enter your file: "
  case fileName of
    "exit" -> return ()
    line -> doProcess line

doProcess line = do
  text <- readFile line 
  putStrLn "Lexing..."
  terminalList <- lexing lexerSpec text
  putStrLn "Parsing..."
  exprSeqAst <- parsing parserSpec terminalList
  putStrLn "Pretty Printing..."
  putStrLn (pprintAst exprSeqAst)
  
  
readline msg = do
  putStr msg
  hFlush stdout
  readline'

readline' = do
  ch <- getChar
  if ch == '\n' then
    return ""
  else
    do line <- readline'
       return (ch:line)