'Parses a set of steps from lines of input.
This will correctly parse and produce a list of steps from lines without
any Scenario: heading at the top. Examples in table form are correctly
parsed, but must be well-formed under a regular step sentence.'

@classmethod
def many_from_lines(klass, lines, filename=None, original_string=None):

    invalid_first_line_error = '\nFirst    line    of    step    "%s"    is    in    %s    form.'
    if (lines and strings.wise_startswith(lines[0], u'|')):
        raise LettuceSyntaxError(None, (invalid_first_line_error % (lines[0], 'table')))
    if (lines and strings.wise_startswith(lines[0], u'"""')):
        raise LettuceSyntaxError(None, (invalid_first_line_error % (lines[0], 'multiline')))
    lines = filter((lambda x: (not (REP.only_whitespace.match(x) or re.match('^\\s*@', x)))), lines)
    step_strings = []
    in_multiline = False
    for line in lines:
        if strings.wise_startswith(line, u'"""'):
            in_multiline = (not in_multiline)
            step_strings[(-1)] += ('\n%s' % line)
        elif (strings.wise_startswith(line, u'|') or in_multiline):
            step_strings[(-1)] += ('\n%s' % line)
        elif ('#' in line):
            step_strings.append(klass._handle_inline_comments(line))
        else:
            step_strings.append(line)
    mkargs = (lambda s: [s, filename, original_string])
    return [klass.from_string(*mkargs(s)) for s in step_strings]
