def parse(filename, linenum)
      @filename, @linenum = filename, linenum
      buf = []
      File.open(filename, "rb").each_with_index do |line, index|
        next if index < linenum - 1
        buf << line
        begin
          return do_parse(buf.join)
        rescue ::Parser::SyntaxError
          node = trim_and_retry(buf)
          return node if node
        end
      end
      fail(::Parser::SyntaxError, 'Unknown error')
    end
def parse(filename, linenum)
      @filename, @linenum = filename, linenum
      buf = []
      File.open(filename, "rb").each_with_index do |line, index|
        next if index < linenum - 1
        buf << line
        begin
          return do_parse(buf.join)
        rescue ::Parser::SyntaxError
          node = trim_and_retry(buf)
          return node if node
        end
      end
      fail(::Parser::SyntaxError, 'Unknown error')
    end
Read file and try parsing
 if success parse, find proc AST

 @param filename [String] reading file path
 @param linenum [Integer] start line number
 @return [Parser::AST::Node] Proc AST