'Return a generator that adds edges to the chart, one at a
time.  Each time the generator is resumed, it adds a single
edge and yields that edge.  If no more edges can be added,
then it yields None.
If the parser\'s strategy, grammar, or chart is changed, then
the generator will continue adding edges using the new
strategy, grammar, or chart.
Note that this generator never terminates, since the grammar
or strategy might be changed to values that would add new
edges.  Instead, it yields None when no more edges can be
added with the current strategy and grammar.'

def step(self):

    if (self._chart is None):
        raise ValueError(u'Parser    must    be    initialized    first')
    while True:
        self._restart = False
        w = (50 // (self._chart.num_leaves() + 1))
        for e in self._parse():
            if (self._trace > 1):
                print(self._current_chartrule)
            if (self._trace > 0):
                print(self._chart.pretty_format_edge(e, w))
            (yield e)
            if self._restart:
                break
        else:
            (yield None)
