FormalGrammars 0.2.1.0 → 0.2.1.1
raw patch · 2 files changed
+27/−15 lines, 2 filesdep ~ADPfusiondep ~PrimitiveArraydep ~lensPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: ADPfusion, PrimitiveArray, lens, mtl, text, vector
API changes (from Hackage documentation)
- FormalLanguage.CFG.Grammar.Types: _attr :: Rule -> [AttributeFunction]
- FormalLanguage.CFG.Grammar.Types: _getAttr :: AttributeFunction -> String
- FormalLanguage.CFG.Grammar.Types: _getIndexName :: IndexName -> String
- FormalLanguage.CFG.Grammar.Types: _getSteName :: SymbolName -> String
- FormalLanguage.CFG.Grammar.Types: _getSymbolList :: Symbol -> [SynTermEps]
- FormalLanguage.CFG.Grammar.Types: _getTape :: Tape -> Int
- FormalLanguage.CFG.Grammar.Types: _grammarName :: Grammar -> String
- FormalLanguage.CFG.Grammar.Types: _index :: SynTermEps -> [Index]
- FormalLanguage.CFG.Grammar.Types: _indexHere :: Index -> Integer
- FormalLanguage.CFG.Grammar.Types: _indexName :: Index -> IndexName
- FormalLanguage.CFG.Grammar.Types: _indexOp :: Index -> IOP
- FormalLanguage.CFG.Grammar.Types: _indexRange :: Index -> [Integer]
- FormalLanguage.CFG.Grammar.Types: _indexStep :: Index -> Integer
- FormalLanguage.CFG.Grammar.Types: _indices :: Grammar -> Map IndexName Index
- FormalLanguage.CFG.Grammar.Types: _lhs :: Rule -> Symbol
- FormalLanguage.CFG.Grammar.Types: _name :: SynTermEps -> SymbolName
- FormalLanguage.CFG.Grammar.Types: _outside :: Grammar -> DerivedGrammar
- FormalLanguage.CFG.Grammar.Types: _params :: Grammar -> Map IndexName Index
- FormalLanguage.CFG.Grammar.Types: _rhs :: Rule -> [Symbol]
- FormalLanguage.CFG.Grammar.Types: _rules :: Grammar -> Set Rule
- FormalLanguage.CFG.Grammar.Types: _splitK :: SynTermEps -> Integer
- FormalLanguage.CFG.Grammar.Types: _splitN :: SynTermEps -> Integer
- FormalLanguage.CFG.Grammar.Types: _start :: Grammar -> Symbol
- FormalLanguage.CFG.Grammar.Types: _synterms :: Grammar -> Map SymbolName SynTermEps
- FormalLanguage.CFG.Grammar.Types: _synvars :: Grammar -> Map SymbolName SynTermEps
- FormalLanguage.CFG.Grammar.Types: _termvars :: Grammar -> Map SymbolName SynTermEps
- FormalLanguage.CFG.Grammar.Types: _write :: Grammar -> Bool
- FormalLanguage.CFG.Grammar.Types: instance Data AttributeFunction
- FormalLanguage.CFG.Grammar.Types: instance Data DerivedGrammar
- FormalLanguage.CFG.Grammar.Types: instance Data Grammar
- FormalLanguage.CFG.Grammar.Types: instance Data IOP
- FormalLanguage.CFG.Grammar.Types: instance Data Index
- FormalLanguage.CFG.Grammar.Types: instance Data IndexName
- FormalLanguage.CFG.Grammar.Types: instance Data Rule
- FormalLanguage.CFG.Grammar.Types: instance Data Symbol
- FormalLanguage.CFG.Grammar.Types: instance Data SymbolName
- FormalLanguage.CFG.Grammar.Types: instance Data SynTermEps
- FormalLanguage.CFG.Grammar.Types: instance Data Tape
- FormalLanguage.CFG.Grammar.Types: instance Default DerivedGrammar
- FormalLanguage.CFG.Grammar.Types: instance Default Grammar
- FormalLanguage.CFG.Grammar.Types: instance Enum Tape
- FormalLanguage.CFG.Grammar.Types: instance Eq AttributeFunction
- FormalLanguage.CFG.Grammar.Types: instance Eq DerivedGrammar
- FormalLanguage.CFG.Grammar.Types: instance Eq IOP
- FormalLanguage.CFG.Grammar.Types: instance Eq Index
- FormalLanguage.CFG.Grammar.Types: instance Eq IndexName
- FormalLanguage.CFG.Grammar.Types: instance Eq Rule
- FormalLanguage.CFG.Grammar.Types: instance Eq Symbol
- FormalLanguage.CFG.Grammar.Types: instance Eq SymbolName
- FormalLanguage.CFG.Grammar.Types: instance Eq SynTermEps
- FormalLanguage.CFG.Grammar.Types: instance Eq Tape
- FormalLanguage.CFG.Grammar.Types: instance IsString AttributeFunction
- FormalLanguage.CFG.Grammar.Types: instance IsString IndexName
- FormalLanguage.CFG.Grammar.Types: instance IsString SymbolName
- FormalLanguage.CFG.Grammar.Types: instance Monoid Symbol
- FormalLanguage.CFG.Grammar.Types: instance Num Tape
- FormalLanguage.CFG.Grammar.Types: instance Ord AttributeFunction
- FormalLanguage.CFG.Grammar.Types: instance Ord IOP
- FormalLanguage.CFG.Grammar.Types: instance Ord Index
- FormalLanguage.CFG.Grammar.Types: instance Ord IndexName
- FormalLanguage.CFG.Grammar.Types: instance Ord Rule
- FormalLanguage.CFG.Grammar.Types: instance Ord Symbol
- FormalLanguage.CFG.Grammar.Types: instance Ord SymbolName
- FormalLanguage.CFG.Grammar.Types: instance Ord SynTermEps
- FormalLanguage.CFG.Grammar.Types: instance Ord Tape
- FormalLanguage.CFG.Grammar.Types: instance Semigroup Symbol
- FormalLanguage.CFG.Grammar.Types: instance Show AttributeFunction
- FormalLanguage.CFG.Grammar.Types: instance Show DerivedGrammar
- FormalLanguage.CFG.Grammar.Types: instance Show Grammar
- FormalLanguage.CFG.Grammar.Types: instance Show IOP
- FormalLanguage.CFG.Grammar.Types: instance Show Index
- FormalLanguage.CFG.Grammar.Types: instance Show IndexName
- FormalLanguage.CFG.Grammar.Types: instance Show Rule
- FormalLanguage.CFG.Grammar.Types: instance Show Symbol
- FormalLanguage.CFG.Grammar.Types: instance Show SymbolName
- FormalLanguage.CFG.Grammar.Types: instance Show SynTermEps
- FormalLanguage.CFG.Grammar.Types: instance Show Tape
- FormalLanguage.CFG.Grammar.Types: instance Typeable AttributeFunction
- FormalLanguage.CFG.Grammar.Types: instance Typeable DerivedGrammar
- FormalLanguage.CFG.Grammar.Types: instance Typeable Grammar
- FormalLanguage.CFG.Grammar.Types: instance Typeable IOP
- FormalLanguage.CFG.Grammar.Types: instance Typeable Index
- FormalLanguage.CFG.Grammar.Types: instance Typeable IndexName
- FormalLanguage.CFG.Grammar.Types: instance Typeable Rule
- FormalLanguage.CFG.Grammar.Types: instance Typeable Symbol
- FormalLanguage.CFG.Grammar.Types: instance Typeable SymbolName
- FormalLanguage.CFG.Grammar.Types: instance Typeable SynTermEps
- FormalLanguage.CFG.Grammar.Types: instance Typeable Tape
- FormalLanguage.CFG.Parser: _current :: GrammarEnv -> Grammar
- FormalLanguage.CFG.Parser: _emit :: GrammarEnv -> Seq Grammar
- FormalLanguage.CFG.Parser: _env :: GrammarEnv -> Map String Grammar
- FormalLanguage.CFG.Parser: _verbose :: GrammarEnv -> Bool
- FormalLanguage.CFG.Parser: instance (Functor m, MonadPlus m) => Alternative (GrammarParser m)
- FormalLanguage.CFG.Parser: instance (Monad m, Functor m) => Applicative (GrammarParser m)
- FormalLanguage.CFG.Parser: instance (MonadPlus m, CharParsing m) => CharParsing (GrammarParser m)
- FormalLanguage.CFG.Parser: instance (MonadPlus m, CharParsing m) => TokenParsing (GrammarParser m)
- FormalLanguage.CFG.Parser: instance (MonadPlus m, Parsing m) => Parsing (GrammarParser m)
- FormalLanguage.CFG.Parser: instance Default GrammarEnv
- FormalLanguage.CFG.Parser: instance Functor m => Functor (GrammarParser m)
- FormalLanguage.CFG.Parser: instance Monad m => Monad (GrammarParser m)
- FormalLanguage.CFG.Parser: instance Monad m => MonadState GrammarEnv (GrammarParser m)
- FormalLanguage.CFG.Parser: instance MonadPlus m => MonadPlus (GrammarParser m)
- FormalLanguage.CFG.Parser: instance MonadState GrammarEnv (Unlined (GrammarParser Parser))
- FormalLanguage.CFG.Parser: instance Show GrammarEnv
- FormalLanguage.CFG.Parser: runGrammarParser :: GrammarParser m a -> StateT GrammarEnv m a
- FormalLanguage.CFG.TH: instance Default CfgState
+ FormalLanguage.CFG.Grammar.Types: [_attr] :: Rule -> [AttributeFunction]
+ FormalLanguage.CFG.Grammar.Types: [_getAttr] :: AttributeFunction -> String
+ FormalLanguage.CFG.Grammar.Types: [_getIndexName] :: IndexName -> String
+ FormalLanguage.CFG.Grammar.Types: [_getSteName] :: SymbolName -> String
+ FormalLanguage.CFG.Grammar.Types: [_getSymbolList] :: Symbol -> [SynTermEps]
+ FormalLanguage.CFG.Grammar.Types: [_getTape] :: Tape -> Int
+ FormalLanguage.CFG.Grammar.Types: [_grammarName] :: Grammar -> String
+ FormalLanguage.CFG.Grammar.Types: [_indexHere] :: Index -> Integer
+ FormalLanguage.CFG.Grammar.Types: [_indexName] :: Index -> IndexName
+ FormalLanguage.CFG.Grammar.Types: [_indexOp] :: Index -> IOP
+ FormalLanguage.CFG.Grammar.Types: [_indexRange] :: Index -> [Integer]
+ FormalLanguage.CFG.Grammar.Types: [_indexStep] :: Index -> Integer
+ FormalLanguage.CFG.Grammar.Types: [_index] :: SynTermEps -> [Index]
+ FormalLanguage.CFG.Grammar.Types: [_indices] :: Grammar -> Map IndexName Index
+ FormalLanguage.CFG.Grammar.Types: [_lhs] :: Rule -> Symbol
+ FormalLanguage.CFG.Grammar.Types: [_name] :: SynTermEps -> SymbolName
+ FormalLanguage.CFG.Grammar.Types: [_outside] :: Grammar -> DerivedGrammar
+ FormalLanguage.CFG.Grammar.Types: [_params] :: Grammar -> Map IndexName Index
+ FormalLanguage.CFG.Grammar.Types: [_rhs] :: Rule -> [Symbol]
+ FormalLanguage.CFG.Grammar.Types: [_rules] :: Grammar -> Set Rule
+ FormalLanguage.CFG.Grammar.Types: [_splitK] :: SynTermEps -> Integer
+ FormalLanguage.CFG.Grammar.Types: [_splitN] :: SynTermEps -> Integer
+ FormalLanguage.CFG.Grammar.Types: [_start] :: Grammar -> Symbol
+ FormalLanguage.CFG.Grammar.Types: [_synterms] :: Grammar -> Map SymbolName SynTermEps
+ FormalLanguage.CFG.Grammar.Types: [_synvars] :: Grammar -> Map SymbolName SynTermEps
+ FormalLanguage.CFG.Grammar.Types: [_termvars] :: Grammar -> Map SymbolName SynTermEps
+ FormalLanguage.CFG.Grammar.Types: [_write] :: Grammar -> Bool
+ FormalLanguage.CFG.Grammar.Types: instance Data.Data.Data FormalLanguage.CFG.Grammar.Types.AttributeFunction
+ FormalLanguage.CFG.Grammar.Types: instance Data.Data.Data FormalLanguage.CFG.Grammar.Types.DerivedGrammar
+ FormalLanguage.CFG.Grammar.Types: instance Data.Data.Data FormalLanguage.CFG.Grammar.Types.Grammar
+ FormalLanguage.CFG.Grammar.Types: instance Data.Data.Data FormalLanguage.CFG.Grammar.Types.IOP
+ FormalLanguage.CFG.Grammar.Types: instance Data.Data.Data FormalLanguage.CFG.Grammar.Types.Index
+ FormalLanguage.CFG.Grammar.Types: instance Data.Data.Data FormalLanguage.CFG.Grammar.Types.IndexName
+ FormalLanguage.CFG.Grammar.Types: instance Data.Data.Data FormalLanguage.CFG.Grammar.Types.Rule
+ FormalLanguage.CFG.Grammar.Types: instance Data.Data.Data FormalLanguage.CFG.Grammar.Types.Symbol
+ FormalLanguage.CFG.Grammar.Types: instance Data.Data.Data FormalLanguage.CFG.Grammar.Types.SymbolName
+ FormalLanguage.CFG.Grammar.Types: instance Data.Data.Data FormalLanguage.CFG.Grammar.Types.SynTermEps
+ FormalLanguage.CFG.Grammar.Types: instance Data.Data.Data FormalLanguage.CFG.Grammar.Types.Tape
+ FormalLanguage.CFG.Grammar.Types: instance Data.Default.Class.Default FormalLanguage.CFG.Grammar.Types.DerivedGrammar
+ FormalLanguage.CFG.Grammar.Types: instance Data.Default.Class.Default FormalLanguage.CFG.Grammar.Types.Grammar
+ FormalLanguage.CFG.Grammar.Types: instance Data.Semigroup.Semigroup FormalLanguage.CFG.Grammar.Types.Symbol
+ FormalLanguage.CFG.Grammar.Types: instance Data.String.IsString FormalLanguage.CFG.Grammar.Types.AttributeFunction
+ FormalLanguage.CFG.Grammar.Types: instance Data.String.IsString FormalLanguage.CFG.Grammar.Types.IndexName
+ FormalLanguage.CFG.Grammar.Types: instance Data.String.IsString FormalLanguage.CFG.Grammar.Types.SymbolName
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Base.Monoid FormalLanguage.CFG.Grammar.Types.Symbol
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Eq FormalLanguage.CFG.Grammar.Types.AttributeFunction
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Eq FormalLanguage.CFG.Grammar.Types.DerivedGrammar
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Eq FormalLanguage.CFG.Grammar.Types.IOP
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Eq FormalLanguage.CFG.Grammar.Types.Index
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Eq FormalLanguage.CFG.Grammar.Types.IndexName
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Eq FormalLanguage.CFG.Grammar.Types.Rule
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Eq FormalLanguage.CFG.Grammar.Types.Symbol
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Eq FormalLanguage.CFG.Grammar.Types.SymbolName
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Eq FormalLanguage.CFG.Grammar.Types.SynTermEps
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Eq FormalLanguage.CFG.Grammar.Types.Tape
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Ord FormalLanguage.CFG.Grammar.Types.AttributeFunction
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Ord FormalLanguage.CFG.Grammar.Types.IOP
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Ord FormalLanguage.CFG.Grammar.Types.Index
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Ord FormalLanguage.CFG.Grammar.Types.IndexName
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Ord FormalLanguage.CFG.Grammar.Types.Rule
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Ord FormalLanguage.CFG.Grammar.Types.Symbol
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Ord FormalLanguage.CFG.Grammar.Types.SymbolName
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Ord FormalLanguage.CFG.Grammar.Types.SynTermEps
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Classes.Ord FormalLanguage.CFG.Grammar.Types.Tape
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Enum.Enum FormalLanguage.CFG.Grammar.Types.Tape
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Num.Num FormalLanguage.CFG.Grammar.Types.Tape
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Show.Show FormalLanguage.CFG.Grammar.Types.AttributeFunction
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Show.Show FormalLanguage.CFG.Grammar.Types.DerivedGrammar
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Show.Show FormalLanguage.CFG.Grammar.Types.Grammar
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Show.Show FormalLanguage.CFG.Grammar.Types.IOP
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Show.Show FormalLanguage.CFG.Grammar.Types.Index
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Show.Show FormalLanguage.CFG.Grammar.Types.IndexName
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Show.Show FormalLanguage.CFG.Grammar.Types.Rule
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Show.Show FormalLanguage.CFG.Grammar.Types.Symbol
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Show.Show FormalLanguage.CFG.Grammar.Types.SymbolName
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Show.Show FormalLanguage.CFG.Grammar.Types.SynTermEps
+ FormalLanguage.CFG.Grammar.Types: instance GHC.Show.Show FormalLanguage.CFG.Grammar.Types.Tape
+ FormalLanguage.CFG.Grammar.Util: isLinear :: Grammar -> Bool
+ FormalLanguage.CFG.Grammar.Util: isRightLinear :: Grammar -> Bool
+ FormalLanguage.CFG.Parser: [_current] :: GrammarEnv -> Grammar
+ FormalLanguage.CFG.Parser: [_emit] :: GrammarEnv -> Seq Grammar
+ FormalLanguage.CFG.Parser: [_env] :: GrammarEnv -> Map String Grammar
+ FormalLanguage.CFG.Parser: [_verbose] :: GrammarEnv -> Bool
+ FormalLanguage.CFG.Parser: [runGrammarParser] :: GrammarParser m a -> StateT GrammarEnv m a
+ FormalLanguage.CFG.Parser: instance (GHC.Base.MonadPlus m, Text.Parser.Char.CharParsing m) => Text.Parser.Char.CharParsing (FormalLanguage.CFG.Parser.GrammarParser m)
+ FormalLanguage.CFG.Parser: instance (GHC.Base.MonadPlus m, Text.Parser.Char.CharParsing m) => Text.Parser.Token.TokenParsing (FormalLanguage.CFG.Parser.GrammarParser m)
+ FormalLanguage.CFG.Parser: instance (GHC.Base.MonadPlus m, Text.Parser.Combinators.Parsing m) => Text.Parser.Combinators.Parsing (FormalLanguage.CFG.Parser.GrammarParser m)
+ FormalLanguage.CFG.Parser: instance Control.Monad.State.Class.MonadState FormalLanguage.CFG.Parser.GrammarEnv (Text.Parser.Token.Unlined (FormalLanguage.CFG.Parser.GrammarParser Text.Trifecta.Parser.Parser))
+ FormalLanguage.CFG.Parser: instance Data.Default.Class.Default FormalLanguage.CFG.Parser.GrammarEnv
+ FormalLanguage.CFG.Parser: instance GHC.Base.Functor m => GHC.Base.Functor (FormalLanguage.CFG.Parser.GrammarParser m)
+ FormalLanguage.CFG.Parser: instance GHC.Base.Monad m => Control.Monad.State.Class.MonadState FormalLanguage.CFG.Parser.GrammarEnv (FormalLanguage.CFG.Parser.GrammarParser m)
+ FormalLanguage.CFG.Parser: instance GHC.Base.Monad m => GHC.Base.Applicative (FormalLanguage.CFG.Parser.GrammarParser m)
+ FormalLanguage.CFG.Parser: instance GHC.Base.Monad m => GHC.Base.Monad (FormalLanguage.CFG.Parser.GrammarParser m)
+ FormalLanguage.CFG.Parser: instance GHC.Base.MonadPlus m => GHC.Base.Alternative (FormalLanguage.CFG.Parser.GrammarParser m)
+ FormalLanguage.CFG.Parser: instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (FormalLanguage.CFG.Parser.GrammarParser m)
+ FormalLanguage.CFG.Parser: instance GHC.Show.Show FormalLanguage.CFG.Parser.GrammarEnv
+ FormalLanguage.CFG.TH: instance Data.Default.Class.Default FormalLanguage.CFG.TH.CfgState
Files
- FormalGrammars.cabal +15/−15
- FormalLanguage/CFG/Grammar/Util.hs +12/−0
FormalGrammars.cabal view
@@ -1,5 +1,5 @@ name: FormalGrammars-version: 0.2.1.0+version: 0.2.1.1 author: Christian Hoener zu Siederdissen, 2013-2015 copyright: Christian Hoener zu Siederdissen, 2013-2015 homepage: https://github.com/choener/FormalGrammars@@ -11,7 +11,7 @@ build-type: Simple stability: experimental cabal-version: >= 1.10.0-tested-with: GHC == 7.8.4, GHC == 7.10.1+tested-with: GHC == 7.8.4, GHC == 7.10.2 synopsis: (Context-free) grammars in formal language theory description: <http://www.bioinf.uni-leipzig.de/Software/gADP/ generalized Algebraic Dynamic Programming>@@ -69,23 +69,23 @@ library build-depends: base >= 4.7 && < 4.9- , ADPfusion >= 0.4.1 && < 0.4.2- , ansi-wl-pprint == 0.6.7.*- , bytestring == 0.10.*+ , ADPfusion >= 0.4.1 && < 0.5.1+ , ansi-wl-pprint >= 0.6.7 && < 0.6.8+ , bytestring >= 0.10 && < 0.11 , containers- , data-default == 0.5.*- , HaTeX == 3.16.*- , lens == 4.*- , mtl == 2.*+ , data-default >= 0.5 && < 0.6+ , HaTeX >= 3.16 && < 3.17+ , lens >= 4.0 && < 5.0+ , mtl >= 2.0 && < 3.0 , parsers >= 0.12 && < 0.13- , PrimitiveArray >= 0.6.0 && < 0.6.2+ , PrimitiveArray >= 0.6.0 && < 0.7.1 , semigroups >= 0.16 && < 0.17 , template-haskell- , text == 1.*+ , text >= 1.0 && < 1.3 , transformers >= 0.3 && < 0.5- , trifecta == 1.5.*- , unordered-containers == 0.2.*- , vector == 0.10.*+ , trifecta >= 1.5 && < 1.6+ , unordered-containers >= 0.2 && < 0.3+ , vector >= 0.10 && < 0.12 exposed-modules: FormalLanguage FormalLanguage.CFG@@ -133,7 +133,7 @@ executable GrammarPP build-depends: base , ansi-wl-pprint- , cmdargs == 0.10.*+ , cmdargs >= 0.10 && < 0.11 , FormalGrammars hs-source-dirs: src
FormalLanguage/CFG/Grammar/Util.hs view
@@ -134,3 +134,15 @@ isll (Rule l _ []) = isSyntactic l isll (Rule l _ rs) = isSyntactic l && (allOf folded (not . isSyntactic) $ tail rs) -- at most one non-terminal +isRightLinear :: Grammar -> Bool+isRightLinear g = allOf folded isrl $ g^.rules where+ isrl :: Rule -> Bool+ isrl (Rule l _ []) = isSyntactic l+ isrl (Rule l _ rs) = isSyntactic l && (allOf folded (not . isSyntactic) $ init rs)++isLinear :: Grammar -> Bool+isLinear g = allOf folded isl $ g^.rules where+ isl :: Rule -> Bool+ isl (Rule l _ []) = isSyntactic l+ isl (Rule l _ rs) = isSyntactic l && (1 >= (length . filter isSyntactic $ rs))+