packages feed

cimple-0.0.1: tools/dump-tokens.hs

module Main (main) where

import qualified Data.ByteString    as BS
import qualified Data.Text          as Text
import qualified Data.Text.Encoding as Text
import           Language.Cimple    (alexScanTokens)
import           System.Environment (getArgs)
import           Text.Groom         (groom)

processFile :: FilePath -> IO ()
processFile source = do
    putStrLn $ "Processing " ++ source
    contents <- Text.unpack . Text.decodeUtf8 <$> BS.readFile source
    case alexScanTokens contents of
        Left err -> fail err
        Right ok -> putStrLn $ groom ok

main :: IO ()
main = do
  args <- getArgs
  case args of
    [src] -> processFile src
    _     -> fail "Usage: dump-tokens <file.c>"