syntax 0.1.0.0 → 0.1.1.0
raw patch · 2 files changed
+27/−1 lines, 2 files
Files
- Data/Syntax/Combinator.hs +25/−0
- syntax.cabal +2/−1
+ Data/Syntax/Combinator.hs view
@@ -0,0 +1,25 @@+{- |+Module : Data.Syntax.Combinator+Description : Combinators that work with any sequence type.+Copyright : (c) Paweł Nowak+License : MIT++Maintainer : Paweł Nowak <pawel834@gmail.com>+Stability : experimental++Combinators that work with any sequence type.+-}+module Data.Syntax.Combinator where++import Control.Lens.Cons+import Control.Lens.Empty+import Data.SemiIsoFunctor++-- | Zero or more occurences of v separated by s.+sepBy :: SemiIsoAlternative f => f a -> f () -> f [a]+sepBy v s = sepBy1 v s + /|/ sipure _Empty++-- | One or more occurences of v separated by s.+sepBy1 :: SemiIsoAlternative f => f a -> f () -> f [a]+sepBy1 v s = _Cons /$/ v /*/ (s */ sepBy1 v s /|/ sipure _Empty)
syntax.cabal view
@@ -1,5 +1,5 @@ name: syntax-version: 0.1.0.0+version: 0.1.1.0 synopsis: Abstract syntax descriptions for parsing and pretty-printing. description: Write single syntax description, get both parser and pretty-printer. .@@ -24,5 +24,6 @@ library exposed-modules: Data.Syntax Data.Syntax.Char+ Data.Syntax.Combinator build-depends: base >= 4 && < 5, mono-traversable, lens, semi-iso default-language: Haskell2010