func errorf(p ast.Position, fmtStr string, args ...interface{}) error { lineStr := fmt.Sprintf("line %d char %d: %s", p.Line(), p.Char(), fmtStr) return fmt.Errorf(lineStr, args...) }
func wrapError(p ast.Position, err error) error { if err == nil { return nil } return fmt.Errorf("line %d char %d: %s", p.Line(), p.Char(), err.Error()) }