packages feed

cimple-0.0.12: src/Language/Cimple.hs

module Language.Cimple
    ( module X
    , DefaultActions
    , defaultActions
    , removeSloc
    ) where

import           Control.Monad.State.Strict (State)
import qualified Control.Monad.State.Strict as State
import           Data.Text                  (Text)

import           Language.Cimple.Annot      as X
import           Language.Cimple.Ast        as X
import           Language.Cimple.Lexer      as X
import           Language.Cimple.MapAst     as X
import           Language.Cimple.Parser     as X
import           Language.Cimple.Tokens     as X

type DefaultActions a = X.IdentityActions (State a) Text

defaultActions :: DefaultActions state
defaultActions = X.identityActions

removeSloc :: Node (Lexeme Text) -> Node (Lexeme Text)
removeSloc =
    flip State.evalState () . mapAst defaultActions
        { doLexeme = \_ (L _ c t) _ -> pure $ L (AlexPn 0 0 0) c t }