packages feed

GrammarProducts 0.1.1.0 → 0.1.1.1

raw patch · 4 files changed

+42/−14 lines, 4 filesdep ~ADPfusiondep ~PrimitiveArraydep ~vectorPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: ADPfusion, PrimitiveArray, vector

API changes (from Hackage documentation)

- FormalLanguage.GrammarProduct.Op.Add: instance Monoid (Add Grammar)
- FormalLanguage.GrammarProduct.Op.Add: instance Semigroup (Add Grammar)
- FormalLanguage.GrammarProduct.Op.Add: runAdd :: Add a -> a
- FormalLanguage.GrammarProduct.Op.Linear: instance Monoid (Linear Grammar)
- FormalLanguage.GrammarProduct.Op.Linear: instance Semigroup (Linear Grammar)
- FormalLanguage.GrammarProduct.Op.Linear: runLinear :: Linear a -> a
- FormalLanguage.GrammarProduct.Parser: getGrammar :: ExprGrammar -> Grammar
- FormalLanguage.GrammarProduct.Parser: getNumber :: ExprGrammar -> Integer
+ FormalLanguage.GrammarProduct.Op.Add: [runAdd] :: Add a -> a
+ FormalLanguage.GrammarProduct.Op.Add: instance Data.Semigroup.Semigroup (FormalLanguage.GrammarProduct.Op.Add.Add FormalLanguage.CFG.Grammar.Types.Grammar)
+ FormalLanguage.GrammarProduct.Op.Add: instance GHC.Base.Monoid (FormalLanguage.GrammarProduct.Op.Add.Add FormalLanguage.CFG.Grammar.Types.Grammar)
+ FormalLanguage.GrammarProduct.Op.Linear: [runLinear] :: Linear a -> a
+ FormalLanguage.GrammarProduct.Op.Linear: instance Data.Semigroup.Semigroup (FormalLanguage.GrammarProduct.Op.Linear.Linear FormalLanguage.CFG.Grammar.Types.Grammar)
+ FormalLanguage.GrammarProduct.Op.Linear: instance GHC.Base.Monoid (FormalLanguage.GrammarProduct.Op.Linear.Linear FormalLanguage.CFG.Grammar.Types.Grammar)
+ FormalLanguage.GrammarProduct.Parser: [getGrammar] :: ExprGrammar -> Grammar
+ FormalLanguage.GrammarProduct.Parser: [getNumber] :: ExprGrammar -> Integer
- FormalLanguage.GrammarProduct.Op: gAdd :: Monoid (Add a) => a -> a -> a
+ FormalLanguage.GrammarProduct.Op: gAdd :: Monoid (Add a) ⇒ a -> a -> a
- FormalLanguage.GrammarProduct.Op.Linear: directProduct :: Semigroup (Linear a) => a -> a -> a
+ FormalLanguage.GrammarProduct.Op.Linear: directProduct :: Semigroup (Linear a) ⇒ a -> a -> a

Files

FormalLanguage/GrammarProduct/Op.hs view
@@ -42,7 +42,7 @@  (><) :: Grammar -> Grammar -> Grammar g >< h-  | isLeftLinear g && isLeftLinear h = runLinear $ Linear g <> Linear h+  | isLinear g && isLinear h         = runLinear $ Linear g <> Linear h --  | isChomskyNF  g && isChomskyNF  h = runCNF $ CNF g <> CNF h --  | isGreibachNF g && isGreibachNF h = runTwoGNF $ TwoGNF g <> TwoGNF h   | otherwise                        = error "Grammars in general CFG form are not handled. You need to convert into either Greibach- or Chomsky normal form. This might change in the future"
FormalLanguage/GrammarProduct/Op/Linear.hs view
@@ -7,15 +7,15 @@  module FormalLanguage.GrammarProduct.Op.Linear where -import Control.Arrow ((&&&))-import Data.Semigroup-import Control.Lens hiding (outside,indices)-import Control.Applicative-import qualified Data.Set as S-import Data.List (groupBy,nub)-import Data.Function (on)-import Data.Default+import           Control.Applicative+import           Control.Arrow ((&&&),second)+import           Control.Lens hiding (outside,indices)+import           Data.Default+import           Data.Function (on)+import           Data.List (groupBy,nub)+import           Data.Semigroup import qualified Data.Map as M+import qualified Data.Set as S  import FormalLanguage.CFG.Grammar @@ -54,7 +54,11 @@  -- | Merges right-hand sides in a linear direct product. For full-fledged CFGs -- in different normal forms, see the GNF and CNF implementations.+--+-- TODO get prefix, get single NT, get suffix ;;; merge prefixes, merge+-- single NTs, merge suffixes ;;; and in case of no NTs? prefer prefixes? +{- mergeRHS :: [Symbol] -> [Symbol] -> [Symbol] mergeRHS [] rs = rs -- neutral element mergeRHS ls [] = ls -- neutral element@@ -83,6 +87,24 @@   goT []       (t : rs) = (genDel dl <> t) : goT [] rs   goT (t : ls) []       = (t <> genDel dr) : goT ls []   goT (u : ls) (v : rs) = (u<>v)           : goT ls rs+-}++mergeRHS :: [Symbol] -> [Symbol] -> [Symbol]+mergeRHS [] rs = rs+mergeRHS ls [] = ls+mergeRHS ls rs = joinFix pls prs ++ joinSymbol ils irs ++ joinFix sls srs+  where (pls,(ils,sls)) = second (span isSyntactic) . break isSyntactic $ ls+        (prs,(irs,srs)) = second (span isSyntactic) . break isSyntactic $ rs+        joinFix []       []       = []+        joinFix []       (t : rs) = (genDel  l <> t) : joinFix [] rs+        joinFix (t : ls) []       = (t <> genDel r ) : joinFix ls []+        joinFix (u : ls) (v : rs) = (u<>v)           : joinFix ls rs+        joinSymbol [l] [r] = [l <> r]+        joinSymbol []  [r] = [genDel l <> r]+        joinSymbol [l] []  = [l <> genDel r]+        joinSymbol []  []  = []+        l = head ls+        r = head rs  groupRHS = groupBy ((==) `on` isTerminal) 
GrammarProducts.cabal view
@@ -1,5 +1,5 @@ name:           GrammarProducts-version:        0.1.1.0+version:        0.1.1.1 author:         Christian Hoener zu Siederdissen, 2013-2015 copyright:      Christian Hoener zu Siederdissen, 2013-2015 homepage:       https://github.com/choener/GrammarProducts@@ -60,7 +60,7 @@  library   build-depends: base               >= 4.7      && < 4.9-               , ADPfusion          >= 0.4.1    && < 0.4.2+               , ADPfusion          >= 0.4.1    && < 0.5.1                , ansi-wl-pprint     >= 0.6      && < 0.7                , bytestring         >= 0.10     && < 0.11                , containers         >= 0.5      && < 0.6@@ -69,7 +69,7 @@                , lens               >= 4        && < 5                , newtype            >= 0.2      && < 0.3                , parsers            >= 0.12     && < 0.13-               , PrimitiveArray     >= 0.6.0.1  && < 0.6.2+               , PrimitiveArray     >= 0.6.0.1  && < 0.7.1                , semigroups         >= 0.15     && < 0.17                , template-haskell   >= 2        && < 3                , transformers       >= 0.4      && < 0.5@@ -143,7 +143,7 @@                  , GrammarProducts                  , PrimitiveArray                  , template-haskell-                 , vector             >= 0.10     && < 0.11+                 , vector             >= 0.10     && < 0.12     buildable: True   else     buildable: False
changelog.md view
@@ -1,7 +1,13 @@+0.1.1.1+-------++- FormalGrammars == 0.2.1.1+- relaxed upper bounds+ 0.1.1.0 ------- -- FormalGrammar == 0.2.1.x with revamped indexed rules system+- FormalGrammars == 0.2.1.x with revamped indexed rules system - new travis.yml  0.1.0.0