forked from GitHub/gf-core
Added srg0006: A grammar with a cycle caused by an empty production.
This commit is contained in:
@@ -88,7 +88,7 @@ stateGFCC = mkGFCC . mkCanon2gfcc . stateGrammarST
|
||||
|
||||
-- * Grammar filtering
|
||||
|
||||
-- | Removes all directly cyclic productions.
|
||||
-- | Removes all directly and indirectly cyclic productions.
|
||||
removeCycles :: CFRules -> CFRules
|
||||
removeCycles = groupProds . removeCycles_ . ungroupProds
|
||||
where removeCycles_ rs = [r | r@(CFRule c rhs _) <- rs, rhs /= [Cat c]]
|
||||
|
||||
10
test/srg/srg0006/srg0006.gf
Normal file
10
test/srg/srg0006/srg0006.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
-- A grammar with a cycle caused by an empty category.
|
||||
cat S; E;
|
||||
|
||||
fun f : E -> S -> S;
|
||||
fun g : S ;
|
||||
fun e : E ;
|
||||
|
||||
lin f e s = { s = e.s ++ s.s } ;
|
||||
lin g = { s = "s" } ;
|
||||
lin e = { s = [] } ;
|
||||
Reference in New Issue
Block a user