mirror of https://github.com/voidlizard/hbs2
31 lines
636 B
Haskell
31 lines
636 B
Haskell
module Main where
|
|
|
|
import Data.Text.Fuzzy.SExp
|
|
import Data.Text.IO qualified as IO
|
|
import Data.Text qualified as Text
|
|
import Data.Either
|
|
import System.TimeIt
|
|
import Control.Monad.Except
|
|
import Data.Functor
|
|
import Data.Function
|
|
import Data.Fixed
|
|
import Prettyprinter
|
|
import System.IO
|
|
|
|
main :: IO ()
|
|
main = do
|
|
s <- IO.getContents
|
|
|
|
(tt,toks) <- timeItT do
|
|
pure (tokenizeSexp s)
|
|
|
|
(pt,top) <- timeItT do
|
|
runExceptT (parseTop @() s) <&> either (error.show) id
|
|
|
|
print (vcat (fmap pretty top))
|
|
|
|
hPrint stderr $ pretty (Text.length s) <+> "chars, parsed in" <+> viaShow (realToFrac pt :: Fixed E6)
|
|
|
|
|
|
|