class SyntaxTree::Parser

def on_program(statements)

on_program: (Statements statements) -> Program
:call-seq:
def on_program(statements)
  last_column = source.length - line_counts.last.start
  location =
    Location.new(
      start_line: 1,
      start_char: 0,
      start_column: 0,
      end_line: line_counts.length - 1,
      end_char: source.length,
      end_column: last_column
    )
  statements.body << @__end__ if @__end__
  statements.bind(self, 0, 0, source.length, last_column)
  program = Program.new(statements: statements, location: location)
  attach_comments(program, @comments)
  program
end