def parse(configuration_filters, tag_counts)
filters = @lines || configuration_filters
builder = Cucumber::Parser::GherkinBuilder.new
filter_formatter = filters.empty? ? builder : Gherkin::Formatter::FilterFormatter.new(builder, filters)
tag_count_formatter = Gherkin::Formatter::TagCountFormatter.new(filter_formatter, tag_counts)
parser = Gherkin::Parser::Parser.new(tag_count_formatter, true, "root", false)
begin
parser.parse(source, @path, 0)
ast = builder.ast
return nil if ast.nil?
ast.language = parser.i18n_language
ast.file = @path
ast
rescue Gherkin::Lexer::LexingError, Gherkin::Parser::ParseError => e
e.message.insert(0, "#{@path}: ")
raise e
end
end