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 +1/−1
- FormalLanguage/GrammarProduct/Op/Linear.hs +30/−8
- GrammarProducts.cabal +4/−4
- changelog.md +7/−1
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