-- | -- Module : Language.Sql -- Copyright : Jean Carlo Giambastiani Lopes, 2017 -- License : MIT -- Stability : experimental -- -- A SQL parser implementation of the minimum required for a ODBC driver. module Language.Sql( module Language.Sql.AST, fromSql, toSql, ast ) where import Text.Megaparsec import Language.Sql.AST import Language.Sql.AST.Tree import Language.Sql.Code import Language.Sql.Parser -- | Parses a SQL statement into an AST fromSql :: String -> Either (ParseError Char Dec) StatementList fromSql xs = parse statementList "(input)" xs -- | Generate a SQL Statement from an AST toSql :: AST a => a -> String toSql x = code x -- | Prints the AST generated from a SQL Statment ast :: String -> IO () ast stmt = case fromSql stmt of (Left er) -> putStrLn $ parseErrorPretty er (Right x) -> view x