on master help sign in
Reversed 'exact', added 'SyntaxChar'.
commit9e6fa12e3183869229916e5766ca04f2e6b46ef6 authorPaweł Nowak <pawel834@gmail.com> dateTue 25 Nov 2014, 23:15 (12 years ago) parentbc482d8
3 files changed+11−4
Data/Syntax.hs+2−2 Data/Syntax/Char.hs+6 syntax.cabal+3−2
Data/Syntax.hs+2−2
@@ -54,7 +54,7 @@ class ( SemiIsoAlternative syn
5454
5555 -- | A specific character.
5656 char :: Element seq -> syn ()
57− char c = exact c /$/ anyChar
57+ char c = rev (exact c) /$/ anyChar
5858
5959 -- | Any character except the given one.
6060 notChar :: Element seq -> syn (Element seq)
@@ -71,7 +71,7 @@ class ( SemiIsoAlternative syn
7171
7272 -- | A specific string.
7373 string :: seq -> syn ()
74− string s = exact s /$/ take (olength s)
74+ string s = rev (exact s) /$/ take (olength s)
7575
7676 -- | A string of length @n@.
7777 take :: Int -> syn seq
Data/Syntax/Char.hs+6
@@ -1,4 +1,5 @@
11{-# LANGUAGE TypeFamilies #-}
2+{-# LANGUAGE ConstraintKinds #-}
23{-# LANGUAGE MultiParamTypeClasses #-}
34{- |
45Module : Data.Syntax.Char
@@ -14,6 +15,7 @@ Common combinators that work with sequences of chars.
1415-}
1516module Data.Syntax.Char (
1617 SyntaxChar(..),
18+ SyntaxText,
1719 signed,
1820 spaces,
1921 spaces_,
@@ -28,6 +30,7 @@ import Data.Scientific (Scientific)
2830import Data.SemiIsoFunctor
2931import Data.Syntax
3032import Data.Syntax.Combinator
33+import Data.Text (Text)
3134
3235-- | Syntax constrainted to sequences of chars.
3336--
@@ -42,6 +45,9 @@ class (Syntax syn seq, Element seq ~ Char) => SyntaxChar syn seq where
4245
4346 {-# MINIMAL decimal, scientific #-}
4447
48+-- | An useful synonym for SyntaxChars with Text sequences.
49+type SyntaxText syn = SyntaxChar syn Text
50+
4551-- | A number with an optional leading '+' or '-' sign character.
4652signed :: (Real a, SyntaxChar syn seq) => syn a -> syn a
4753signed n = _Negative /$/ char '-' */ n
syntax.cabal+3−2
@@ -1,5 +1,5 @@
11name: syntax
2−version: 0.2.1.0
2+version: 0.3.0.0
33synopsis: Syntax descriptions for unified parsing and pretty-printing.
44description:
55 'syntax' allows you to write a single syntax description and instantiate is both as a parser and a pretty printer.
@@ -43,5 +43,6 @@ library
4343 exposed-modules: Data.Syntax
4444 Data.Syntax.Char
4545 Data.Syntax.Combinator
46− build-depends: base >= 4 && < 5, mono-traversable, lens >= 4, semi-iso >= 0.4.1, scientific >= 0.3
46+ Data.Syntax.Indent
47+ build-depends: base >= 4 && < 5, mono-traversable, lens >= 4, semi-iso >= 0.5.0, scientific >= 0.3, text
4748 default-language: Haskell2010