module Main where import Regex.Genex import System.IO import System.Environment import Data.Char (isDigit) defaultRegex :: String defaultRegex = "a(b|c)d{2,3}e*" main :: IO () main = do hSetBuffering stdout NoBuffering args <- getArgs case args of [] -> do prog <- getProgName if prog == "" then run defaultRegex else do fail $ "Usage: " ++ prog ++ " regex [regex...]" rx | all isPure rx -> mapM_ ((putStr "0 " >>) . print) (genexPure rx) | otherwise -> genexPrint rx where isPure [] = True isPure ('\\':'\\':cs) = isPure cs isPure ('\\':'b':_) = False isPure ('\\':c:cs) | isDigit c = False | otherwise = isPure cs isPure (_:cs) = isPure cs run :: String -> IO () run regex = genexPrint [regex]