func (e *Errors) ReportError(l Location, format string, args ...interface{}) {
	err := Error{
		Location: l,
		Message:  fmt.Sprintf(format, args...),
	}
	e.errors = append(e.errors, err)
}
ReportError records an error at a source location.
package common
import (
	"fmt"
	"sort"
)
type Errors struct {
	errors []Error
	source Source
}
func NewErrors(source Source) *Errors {
	return &Errors{
		errors: []Error{},
		source: source}
}