def bnf2CG(fname): d = eval(open(fname).read()) G = {} for v in d: G[v] = {u: set((0, 1)) for u in d[v]['pars']} G = ecj.tr(G) for v in G: ld = {u: set([(0, 1)]) for u in G[v]} G[v] = ld return G
def bnf2CG(fname): d = eval(open(fname).read()) G = {} for v in d: G[v] = {u: set((0,1)) for u in d[v]['pars']} G = ecj.tr(G) for v in G: ld = {u: set([(0,1)]) for u in G[v]} G[v] = ld return G
def hasRoot(G): return hasSink(ecj.tr(G))
def hasRoot(G): return hasSink(ecj.tr(G)) def isSclique(G):