-- | This module contains some bits and pieces to work with Dickinson code.
module Language.Dickinson ( -- * Parser
                            parse
                          , ParseError (..)
                          -- * Lexer
                          , lexDickinson
                          , AlexPosn
                          , Token (..)
                          -- * AST
                          , Dickinson
                          , Declaration (..)
                          , Expression (..)
                          , Builtin (..)
                          , Pattern (..)
                          , DickinsonTy (..)
                          , Name
                          , TyName
                          -- * Renamer
                          , HasRenames (..)
                          , renameExpressionM
                          -- * Imports
                          , resolveImport
                          -- * Version info
                          , dickinsonVersion
                          , dickinsonVersionString
                          ) where

import qualified Data.Version              as V
import           Language.Dickinson.Import
import           Language.Dickinson.Lexer
import           Language.Dickinson.Name
import           Language.Dickinson.Parser
import           Language.Dickinson.Rename
import           Language.Dickinson.Type
import qualified Paths_language_dickinson  as P

dickinsonVersion :: V.Version
dickinsonVersion :: Version
dickinsonVersion = Version
P.version

dickinsonVersionString :: String
dickinsonVersionString :: String
dickinsonVersionString = Version -> String
V.showVersion Version
dickinsonVersion