cimple 0.0.6 → 0.0.7
raw patch · 4 files changed
+41/−5 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Language.Cimple: Annot :: attr -> a -> AnnotF attr a
+ Language.Cimple: [attr] :: AnnotF attr a -> attr
+ Language.Cimple: [unAnnot] :: AnnotF attr a -> a
+ Language.Cimple: addAnnot :: Node lexeme -> AnnotNode lexeme
+ Language.Cimple: data AnnotF attr a
+ Language.Cimple: removeAnnot :: AnnotNode lexeme -> Node lexeme
+ Language.Cimple: type AnnotNode lexeme = Fix (AnnotF () `Compose` NodeF lexeme)
Files
- cimple.cabal +3/−2
- src/Language/Cimple.hs +1/−0
- src/Language/Cimple/AST.hs +4/−3
- src/Language/Cimple/Annot.hs +33/−0
cimple.cabal view
@@ -1,5 +1,5 @@ name: cimple-version: 0.0.6+version: 0.0.7 synopsis: Simple C-like programming language homepage: https://toktok.github.io/ license: GPL-3@@ -32,7 +32,8 @@ , Language.Cimple.Pretty , Language.Cimple.Program other-modules:- Language.Cimple.AST+ Language.Cimple.Annot+ , Language.Cimple.AST , Language.Cimple.Flatten , Language.Cimple.Graph , Language.Cimple.Lexer
src/Language/Cimple.hs view
@@ -7,6 +7,7 @@ import Control.Monad.State.Lazy (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.Parser as X
src/Language/Cimple/AST.hs view
@@ -15,7 +15,8 @@ , CommentStyle (..) ) where -import Data.Aeson (FromJSON, ToJSON)+import Data.Aeson (FromJSON, FromJSON1, ToJSON,+ ToJSON1) import Data.Fix (Fix) import Data.Functor.Classes (Eq1, Read1, Show1) import Data.Functor.Classes.Generic (FunctorClassesDefault (..))@@ -114,8 +115,8 @@ type Node lexeme = Fix (NodeF lexeme) -instance (FromJSON lexeme, FromJSON a) => FromJSON (NodeF lexeme a)-instance (ToJSON lexeme, ToJSON a) => ToJSON (NodeF lexeme a)+instance FromJSON lexeme => FromJSON1 (NodeF lexeme)+instance ToJSON lexeme => ToJSON1 (NodeF lexeme) data AssignOp = AopEq
+ src/Language/Cimple/Annot.hs view
@@ -0,0 +1,33 @@+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeOperators #-}+module Language.Cimple.Annot+ ( AnnotF (..)+ , AnnotNode+ , addAnnot+ , removeAnnot+ ) where++import Data.Fix (Fix, hoistFix)+import Data.Functor.Classes (Eq1, Read1, Show1)+import Data.Functor.Classes.Generic (FunctorClassesDefault (..))+import Data.Functor.Compose (Compose (..))+import GHC.Generics (Generic, Generic1)+import Language.Cimple.AST (Node, NodeF)++data AnnotF attr a = Annot { attr :: attr, unAnnot :: a }+ deriving (Functor, Generic, Generic1)+ deriving (Show1, Read1, Eq1) via FunctorClassesDefault (AnnotF attr)++type AnnotNode lexeme = Fix (AnnotF () `Compose` NodeF lexeme)++addAnnot :: Node lexeme -> AnnotNode lexeme+addAnnot = hoistFix $ Compose . Annot ()++removeAnnot :: AnnotNode lexeme -> Node lexeme+removeAnnot = hoistFix $ unAnnot . getCompose